デーモン プログラムを作成する場合、新しいセッションを作成する必要があります。
例えば:
fork a child process
exit main process
call setsid in child process
なぜ新しいセッションを作成する必要があるのでしょうか? それを背景にすることができます
$myserver&
ありがとう
を使用して xterm でバックグラウンドでプログラムを起動するとmyprog &
、exit コマンドを使用せずに xterm を閉じると、プログラムが強制終了されます。新しいセッションを作成すると、この pb が解決される場合があります (プロセスは xterm の子プロセスであり、新しいセッションを作成すると xterm の子プロセスではありません。終了せずに xterm を閉じても、プログラムは引き続き実行されます)。
man 2 setsid
与えます:
setsid() creates a new session if the calling process is not a process group leader.
The calling process is the leader of the new session, the process group leader of the new
process group, and has no controlling terminal.
The process group ID and session ID of the calling process are set to the PID of
the calling process.
The calling process will be the only process in this new process group and in
this new session.
私が xterm で示した例は、 によって正当化されhas no controlling terminal
ます。