wait() の後、シェルはどのように端末制御権を取得しますか?

wait() の後、シェルはどのように端末制御権を取得しますか?

私たちはシェルを知っていて、forks()それを別のプロセスグループに割り当て、それをフォアグラウンドプロセスグループにしてサブプロセスグループに移動し、親cntrl-cプロセスcntrl-zがそれを待ちます。しかし、子供が終わった後、両親はどのように端末を返しますか?

私は殻を作る。上記の親をmyshellと考え、上記の子を私が下げるコマンドと考えてください。 child(command) は、exec() 一連の関数を使用して実行されます。私の親(シェル)がターミナルリターンを受け取っていないことを確認しました(tcgetpg(pid)afterを使用して確認しましたwait())。

答え1

tcsetpgrp特定の端末のフォアグラウンドプロセスグループを設定して、シェルが再びフォアグラウンドプロセスになるようにする関数があります。また、tcgetpgrp上記の関数はpidの代わりにファイル記述子をパラメータとして使用します。両方の機能のマニュアルページを見てください。

関連情報