プロセスをデーモン化するときにsetsid()を使用する理由


18

service(daemon)を作成するために、親をフォークし、を呼び出して子をセッションリーダーにしながら終了させsetsid()ます。さらに、setsid()を使用する理由は何ですか?孤立プロセスはinit(すべての場合ではありませんが)プロセスによって処理されます。

なぜstsid()を使用するのですか?信号setsid()と処理の間に関係はありますかSIGHUP

回答:


13

setsid()を使用するのは、単に親を殺すと子も殺されるので、setsid()

呼び出しプロセスがプロセスグループリーダーでない場合、新しいセッションを作成します。呼び出しプロセスは、新しいセッションのリーダーであり、新しいプロセスグループのプロセスグループリーダーであり、制御端末はありません。

親は最初のプロセスグループリーダーであり、それを殺す-またはセッション/ターミナルを殺す-グループを殺すので、リーダーを切り替えます(そして、私たちがそこにいる間に新しいセッションを作成します)。


1
THST本当の私は制御端末を紛失したとき、それが送信されるKOWとしては、SIGHUP信号に任意のrealtionを持っていない
カル

7
制御端末が閉じられると、親はSIGHUPを取得します。子供は新しいセッションにいるため、SIGHUPを取得しません。
ZN13
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.