を試してみましたがman(3) setsid
、使い方しか説明されていません。
4 に答える
セッションは、制御端末を共有する一連のプロセスです。setsid は、新しい端末への接続を開始したために新しいセッションを開始したい場合 (端末エミュレーター内でシェルを開始する場合など) に便利です。制御端末に関連付けられている必要があります)。
これらの側面について私が知っている最良の説明は、Unix 環境での RW Stevens Advanced programming にあります。
Why do we need to group processes?
きれいにシャットダウンしたい状況を考えてみましょう。これには、子供に信号を送ることも含まれます。固有の競合状態があります。SIGCHLD が受信されていないため、子がまだ生きていることがわかります。だからあなたは信号を送ります。しかし、子はシグナルが送信される前に終了し、別の (関係のない) プロセスが開始され、シグナルが送信された子と同じ pid を取得します。その後、信号は新しい無関係なプロセスに送られます。これは悪いです。したがって、特定の pid にシグナルを送信するのではなく、プロセス グループにシグナルを送信します。子プロセスが終了し、新しいプロセスが元の pid で始まる場合、新しいプロセスはプロセス グループの一部ではなく、上記の問題は回避されます。