作成するためにサービス (デーモン)親をフォークして終了させ、 を呼び出して子をセッション リーダーにしますsetsid()
。 さらに、なぜ を使用するのsetsid()
でしょうか。 孤立したプロセスは、(すべてのケースではありませんが) プロセスによって処理されますinit
。
なぜ を使用するのですか?と 処理信号setsid()
の間には何らかの関係がありますか?setsid()
SIGHUP
答え1
setsid()
親を殺すだけでは子も殺されてしまうため、を使用しますsetsid()
。
新しいセッションを作成する呼び出しプロセスがプロセス グループ リーダーでない場合。呼び出しプロセスは、新しいセッションのリーダーであり、新しいプロセス グループのプロセス グループ リーダーであり、制御端末を持ちません。
親は最初のプロセス グループ リーダーであり、それを強制終了するか、セッション/ターミナルを強制終了するとグループが強制終了されるため、リーダーを切り替えます (その際に新しいセッションを作成します)。