http://blog.csdn.net/vevenlcf/article/details/51839072
- step 1.创建子进程,父进程退出
- step 2.在子进程中创建新会话
- step 3.改变当前目录为根目录
- step 4.重设文件权限掩码
- step 5.关闭文件描述符
- #include <unistd.h>
- #include <syslog.h>
- #include <signal.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #define MAXFD 64
- void demo_init()
- {
- int i ;
- pid_t pid;
- if(pid = fork())//fork ,终止父进程
- exit(0);
- setsid();//为子进程创建新会话期,即摆脱原会话期、原进程组、原控制终端的控制
- signal(SIGHUP, SIG_IGN);//父进程对子进程结束状态不感兴趣,忽略子进程结束信号SIG_IGN
- chdir("/");// 将当前工作目录改为根目录
- umask(0); //文件权限全无
- for(i =0 ; i< MAXFD; i++)
- {
- close(i);//关闭所有打开的文件,包括标准输入/出,错误输出
- }
- }
- int main()
- {
- demo_init();
- while(1);
- }