|
自己要写一个daemon程序,可是却不知道如何调试,没有办法,只好先写一个不是daemon的程序,然后写一个函数使它成为daemon。
问题出现了……,在非daemon下调试不会退出的。可是在daemon下调试会退出。
不知道怎么办才好
- void init_daemon(void)
- {
- int pid;
- if((pid=fork()) > 0)
- {
- exit(0);
- }//是父进程,结束父进程
- else if(pid< 0)
- _exit(1);//fork失败,退出
- //是第一子进程,后台继续执行
-
- setsid();//第一子进程成为新的会话组长和进程组长 并与控制终端分离
- if((pid=fork()) > 0)
- exit(0);//是第一子进程,结束第一子进程
- else if(pid< 0)
- _exit(1);//fork失败,退出
- //是第二子进程,继续
- //第二子进程不再是会话组长
- 因为本人程序中需要读写文件所以没用执行关闭文件描述符
- //signal(SIGCHLD,SIG_IGN);
- // for(i=3;i< NOFILE;++i)//关闭打开的文件描述符
- // close(i);
- chdir("/");//改变工作目录到/
- umask(0);//重设文件创建掩模
- return;
- }
复制代码
大家说说 |
|