守护进程

来源:互联网 发布:外国人看李小龙知乎 编辑:程序博客网 时间:2024/05/01 21:02

1,创建子进程,父进程退出

在Linux中父进程先于子进程退出会造成子进程成为孤儿进程,而每当系统发现一个孤儿进程时,就会自动由1号进程(init)收养它,这样,原先的子进程就会变成init进程的子进程。

2,在子进程中创建新会话

进程组:是一个或多个进程的集合。进程组有进程组ID来唯一标识。除了进程号(PID)之外,进程组ID也是一个进程的必备属性。每个进程组都有一个组长进程,其组长进程的进程号等于进程组ID。且该进程组ID不会因组长进程的退出而受到影响。  

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

setsid函数作用

  setsid函数用于创建一个新的会话,并担任该会话组的组长。

调用setsid有下面的3个作用:  

让进程摆脱原会话的控制  

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

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

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

 

还有些步骤,

改变当前目录为根目录

重设文件权限掩码

关闭文件描述符

原创粉丝点击