让进程摆脱原会话的控制 让进程摆脱原进程组的控制 让进程摆脱原控制终端的控制

会话周期

在linux中,守护进程的编写步骤中,第二步:在子进程中创建新会话。

会话周期:会话期是一个或多个进程组的集合。通常,一个会话开始于用户登录,终止于用户退出,在此期间该用户运行的所有进程都属于这个会话期。

接下来就可以具体介绍setsid的相关内容:

(1)setsid函数作用:

setsid函数用于创建一个新的会话,并担任该会话组的组长。调用setsid有下面的3个作用:

让进程摆脱原会话的控制

让进程摆脱原进程组的控制

让进程摆脱原控制终端的控制

那么,在创建守护进程时为什么要调用setsid函数呢?由于创建守护进程的第一步调用了fork函数来创建子进程,再将父进程退出。由于在调用了fork函数时,子进程全盘拷贝了父进程的会话期、进程组、控制终端等,虽然父进程退出了,但会话期、进程组、控制终端等并没有改变,因此,这还不是真正意义上的独立开来,而setsid函数能够使进程完全独立出来,从而摆脱其他进程的控制。