私たちはシェルを知っていて、forks()
それを別のプロセスグループに割り当て、それをフォアグラウンドプロセスグループにしてサブプロセスグループに移動し、親cntrl-c
プロセスcntrl-z
がそれを待ちます。しかし、子供が終わった後、両親はどのように端末を返しますか?
私は殻を作る。上記の親をmyshellと考え、上記の子を私が下げるコマンドと考えてください。 child(command) は、exec() 一連の関数を使用して実行されます。私の親(シェル)がターミナルリターンを受け取っていないことを確認しました(tcgetpg(pid)
afterを使用して確認しましたwait()
)。
答え1
tcsetpgrp
特定の端末のフォアグラウンドプロセスグループを設定して、シェルが再びフォアグラウンドプロセスになるようにする関数があります。また、tcgetpgrp
上記の関数はpidの代わりにファイル記述子をパラメータとして使用します。両方の機能のマニュアルページを見てください。