利用网上下载的这段代码,成功实现了守护进程,原来守护进程是很简单的事情。
在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;
- }
本日志由 ouzo 于 2010-03-21 23:30:32 发表,目前已经被浏览 7938 次,评论 0 次;
引用通告:http://www.hiouzo.cn/Article/59/Trackback.ashx
Powered by AiteIdea Inc. Designed by ouzo 豫ICP备11028013号-1