セッション リーダーが制御端末を取得すると、セッション内の他の既存のプロセスもどのようにして制御端末を取得するのでしょうか。

セッション リーダーが制御端末を取得すると、セッション内の他の既存のプロセスもどのようにして制御端末を取得するのでしょうか。

複数のプロセスがあり、制御端末がないセッションがあるとします。

セッションリーダーが制御端末への接続を作成すると、

  • 同じセッション内の他のプロセスは、セッションに制御端末があることをどのように知るのでしょうか?

  • 制御端末もどのように利用することができるのでしょうか?

この質問の理由は次のとおりです。通常、プロセスはsetsid()新しいセッションを開始してそのリーダーになるために を呼び出し、open()制御端末に接続するために を呼び出します。その後、セッション リーダーは子プロセスに進みfork()、子プロセスは制御端末へのファイル記述子を継承します。

では、セッションにすでに複数のプロセスがあり、制御端末がない場合、リーダーが制御端末への接続を作成すると、セッション内の他のプロセスはどうなるのだろうかと思います。

ありがとう。

答え1

セッション リーダーが制御端末を取得した後に作成する新しい子も、その制御端末を持つことになります。制御端末は親から継承されるものです。

言い換えれば、既存の子供は影響を受けません。

関連情報