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

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

为了创建一个服务(守护进程)我们分叉父进程并使其退出,同时通过调用 使子进程成为会话领导者setsid()。而且我们为什么要使用setsid()?我们的孤儿进程由init(尽管并非所有情况)进程来处理。

我们为什么使用setsid()setsid()和处理SIGHUP信号之间有什么关系吗?

答案1

我们之所以使用,setsid()是因为如果我们只杀死父母,孩子也会被杀死,即setsid()

创建一个新会话如果调用进程不是进程组领导者。调用进程是新会话的领导者、新进程组的进程组领导者,并且没有控制终端。

父进程是第一个进程组领导者,杀死它 - 或杀死会话/终端 - 杀死该组,这就是我们切换领导者的原因(并在我们处于该状态时创建一个新会话)。

相关内容