プロセス (私の場合はセッション リーダー) はどのようにして制御端末を取得できますか?
プログラムで行うこと:
1. fork;
2. parent -> while(1) or smth. similar;
3. child -> setsid();
exec "man ps";
私は出力に何も得られないと信じていました。(子はセッション リーダーであるため、古い tty とは関係ありません) しかし、取得した理由がわかりません。男性が出力します。しかし、インタラクティブではありません。Ctrl-z を押すと、「q」を押すとインタラクティブになり、終了してプログラム (親) に戻ります。質問は次のとおりです。
- 最初に何が起こるか説明してください (なぜ ctrl-z を押さなければならないのか、上記をお読みください)
- なぜ人はそのシェルで出力を行うのですか?
- tty を接続せずに man を実行するにはどうすればよいですか (ps で確認したところ、man とページャーの TTY 列に「?」が表示されています)。
- 最後に、新しいセッション リーダーが制御端末を取得するにはどうすればよいでしょうか。他に道はあり
open(/dev/tty)
ますか?