为了创建一个服务(守护进程)我们分叉父进程并使其退出,同时通过调用 使子进程成为会话领导者setsid()
。而且我们为什么要使用setsid()
?我们的孤儿进程由init
(尽管并非所有情况)进程来处理。
我们为什么使用setsid()
?setsid()
和处理SIGHUP
信号之间有什么关系吗?
答案1
我们之所以使用,setsid()
是因为如果我们只杀死父母,孩子也会被杀死,即setsid()
:
创建一个新会话如果调用进程不是进程组领导者。调用进程是新会话的领导者、新进程组的进程组领导者,并且没有控制终端。
父进程是第一个进程组领导者,杀死它 - 或杀死会话/终端 - 杀死该组,这就是我们切换领导者的原因(并在我们处于该状态时创建一个新会话)。