- 论坛徽章:
- 0
|
pid = fork();
if (pid > 0) //父进程终止运行;子进程过继给init进程,其退出状态也由init进程处理,避免了产生僵死进程
exit(EXIT_SUCCESS);
else if (pid < 0)
{
ErrorLog("InitDaemon fork(parent)");
exit(EXIT_FAILURE);
}
/* 4、脱离控制终端,登录会话和进程组
* 调用setsid()使子进程成为会话组长
*/
setsid();
/* 5、禁止进程重新打开控制终端
* 通过使守护进程不再成为会话组长来禁止进程重新打开控制终端
*/
pid = fork();
if (pid > 0) //子进程终止运行;孙进程过继给init进程,其退出状态也由init进程处理,避免了产生僵死进程
exit(EXIT_SUCCESS);
else if (pid < 0)
{
ErrorLog("InitDaemon fork(child)");
exit(EXIT_FAILURE);
}
初学守护进程,其中第二次fork,通过使守护进程不再成为会话组长来禁止进程重新打开控制终端。这个不明白,会话组长怎么才能打开控制终端。 |
|