为什么在守护进程时使用setsid()?


18

为了创建服务(守护程序),我们通过调用派生父级并使其退出,同时使子级成为会话领导者setsid()。此外,为什么要使用setsid()?我们的孤立进程由init(尽管并非在所有情况下)进程来处理。

为什么我们使用stsid()?setsid()与处理SIGHUP信号之间是否有任何关系。

Answers:


13

我们使用setsid()是因为如果我们只是杀死父母,那么孩子也会被杀死,setsid()

如果调用进程不是进程组负责人,则创建一个新会话。呼叫过程是新会话的负责人,新过程组的过程组负责人,没有控制终端。

父级是第一个流程组组长,杀死它-或杀死会话/终端-杀死组,这就是为什么我们要更换组长(并在其上创建新会话)的原因。


1
没错,但是它对SIGHUP信号有任何影响,因为我知道当控制终端丢失时发送该信号
Kalu 2015年

7
当控制终端关闭时,父级将收到SIGHUP。这个孩子不会收到SIGHUP,因为它在新的会话中。
ZN13
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.