利用网上下载的这段代码,成功实现了守护进程,原来守护进程是很简单的事情。

在main函数中执行

init_daemon();//初始化为Daemon

就可以把进程变成守护进程

#include   
#include   
#include   
#include   
#include   
 
void init_daemon(void)  
{  
int pid;  
int i;  
 
if(pid=fork())  
exit(0);//是父进程,结束父进程  
else if(pid< 0)  
exit(1);//fork失败,退出  
//是第一子进程,后台继续执行  
 
setsid();//第一子进程成为新的会话组长和进程组长  
//并与控制终端分离  
if(pid=fork())  
exit(0);//是第一子进程,结束第一子进程  
else if(pid< 0)  
exit(1);//fork失败,退出  
//是第二子进程,继续  
//第二子进程不再是会话组长  
 
for(i=0;i< NOFILE;++i)//关闭打开的文件描述符  
close(i);  
chdir("/tmp");//改变工作目录到/tmp  
umask(0);//重设文件创建掩模  
return;  
}