利用网上下载的这段代码,成功实现了守护进程,原来守护进程是很简单的事情。 在main函数中执行 init_daemon();//初始化为Daemon 就可以把进程变成守护进程 [code=c] #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; } [/code] |
|小黑屋|手机版|知行技术社区
( 湘ICP备11020288号-1 )
GMT+8, 2020-4-5 11:05 , Processed in 0.010399 second(s), 8 queries , Redis On.
Powered by Discuz! X3.4
Copyright © 2001-2020, Tencent Cloud.