编写守护程序时,需要为它创建一个新会话。
例如:
fork a child process
exit main process
call setsid in child process
我想知道为什么我们需要为它创建一个新的会话?
我们可以把它放到后台$myserver&
由于
答案 0 :(得分:2)
当您在xterm中使用myprog &
在后台启动程序时,如果在没有命令退出的情况下关闭xterm,程序将被终止。创建一个新的会话可能会解决这个问题(该过程是xterm的子进程,当你创建一个新的会话时,他不是xterm的子进程。你可以在不退出的情况下关闭xterm,程序仍然会运行)。 / p>
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
。