int init_daemon(void)
{
pid_t pid;
int i;
pid = fork();
if(pid > 0) //第一步,结束父进程,使得子进程成为后台
exit(0);
else if(pid < 0)
return -1;
//第二步建立一个新的进程组,在这个新的进程组中,子进程成为这个进程组的首进程,以使该进程脱离所有终端。
setsid();
//再次新建一个子进程,退出父进程,保证该进程不是进程组长,同时让该进程无法再打开一个新的终端。
pid = fork();
if(pid > 0)
exit(0);
//第三步,关闭所有从父进程继承的不再需要的文件描述符。 0 1 2 ------ 输入 输出 报错
for(i=0;i<NOFILE;close(i++))
//第四步,改变工作目录,使得进程不与任何文件系统联系
chdir(“/”);
//第五步,将文件屏蔽字设置为0
umask(0);
//第六步,忽略SIGCHLD信号,使得子进程不产生僵尸进程
signal(SIGCHLD,SIG_IGN);
return 0;
}
linux 怎样生成守护进程
最新推荐文章于 2024-10-11 14:09:01 发布