1

デーモン プログラムを作成する場合、新しいセッションを作成する必要があります。

例えば:

 fork a child process
 exit main process
 call setsid in child process

なぜ新しいセッションを作成する必要があるのでしょうか? それを背景にすることができます

$myserver&

ありがとう

4

1 に答える 1

3

を使用して 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ます。

于 2013-11-02T21:09:39.457 に答える