#include <unistd.h> #include <stdio.h>#define RUNNING_DIR /tmp int main(){ pid_t pid; pid=fork(); if(pid!=0)exit(0); // 如果创建失败或者为父进程则退出 printf("Running..."); setsid(); // obtain a new process grop for(int i=gettabsize();i>=0;i--){close(i);} i=open("/dev/null",O_RDWR); dup(i); dup(i); umask(027); chdir(RUNNING_DIR); signal(SIGCHLD,SIG_IGN);
signal(SIGTSTP,SIG_IGN);
signal(SIGTTOU,SIG_IGN);
signal(SIGTTIN,SIG_IGN);
signal(SIGHUP,HelperDaemon::signalHandler); // hangup
signal(SIGTERM,HelperDaemon::signalHandler); // kill
while(1); return 0; }