编写守护进程需要5步:
1 创建子进程,父进程结束(让这个进程由init进程托管)
1 pid = fork(); 2 if(pid > 0) //父进程 3 { 4 exit(0); 5 }
2 在子进程中创建新会话(此进程就可以脱离原来进程,脱离控制终端,脱离原来进程组)
1 setsid(); //最主要是脱离控制终端
3 改变当前目录(每一个进程都有一个当前目录), 不是必须的
1 chdir("/tmp");
4 重新设置文件权限掩码(不是必须的)
1 umask(0);
5 关闭打开的文件描述符(如果父进程打开了一些文件,子进程会继承过来,那么子进程把这些文件关闭)
1 int num; 2 num = getdtablesize(); //获得当前打开的文件描述符表 3 for(i = 0; i < num; i++) 4 { 5 close(i); 6 }