守护进程的创建包含五个步骤:
1、创建子进程,退出父进程。
2、子进程创建新的会话。
3、更改当前工作目录。
4、修改文件权限掩码。
5、关闭打开的文件描述符号。
下面给出参考代码:
void creatdaemon()
{
pid_t pid;
int i;
if((pid = fork())<0) //创建子进程,退出父进程。变成孤儿进程
{ //被init进程收养 子进程在后台运行
perror("fork");
exit(-1);
}
else if(pid >0)
{
exit(0);
}
setsid();//创建新会话。子进程成为新的会话组长 子进程脱离原先的终端
umask(0); //更改文件权限 文件权限值&(~umask)
chdir("/tmp"); //更改当前工作目录 chdir("/");
for(i=0;i<getdtablesize();i++) //关闭打开的文件描述符
{
close(i);
}
}