守护进程是在后台运行,不受用户的控制;守护进程没有任何存在的父进程。如果一个进程想成为守护进程,有fork()创建;然后终止父进程,脱离资源。
例子:
void init_daemon()
{
int pid,i;
pid = fork();
if(pid)
exit(0);//结束父进程
else
exit(1);//失败退出
//是子进程成为组长
setid();
for(i=0;i< NOFILE;++i)//关闭打开的文件描述符
close(i);
chdir("/tmp");//改变工作目录到/tmp
umask(0);//重设文件创建掩模
return;
}