web-dev-qa-db-ja.com

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

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

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

19
Kalu

Setsid()を使用するのは、親を殺すだけの場合、子も殺されるので、setsid()

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

親は最初のプロセスグループリーダーであり、グループを強制終了するか、セッション/ターミナルを強制終了すると、グループが強制終了されます。そのため、リーダーを切り替えます(その間に新しいセッションを作成します)。

14
ZN13