#include <stdlib.h> #include <stdio.h> #include <fcntl.h> void createdaemon(void) { pid_t pid; if ((pid = fork()) < 0)
{ perror("fork"); exit(1); }
else if (pid != 0)
exit(0); //父进程退出 setsid(); //创建新的会话组 if (chdir("/") < 0) //改变进程工作目录
{ perror("chdir"); exit(1); } close(0); if(open("/dev/null", O_RDWR) < 0) //0号文件描述符已经关闭,那么打开的文件的文件描述符一定是0
{ perror("open for /dev/null");
exit(2);
}
dup2(0, 1); //复制将0号文件描述符复制给标准输出和标准错误 dup2(0, 2); //后边可以加守护进程的个性代码 }
int main(void) { createdaemon(); while(1); }
守护进程的最简单实现方法
最新推荐文章于 2018-09-20 20:08:39 发布