#include"unpipc.h"int main(){int i,fd0,fd1,fd2;pid_t pid;struct rlimit rl;struct sigaction sa;umask(0);if(getrlimit(RLIMIT_NOFILE,&rl)<0){sys_err("getrlimit error");}if((pid=fork())<0){sys_err("fork error");}else if(pid!=0){exit(0);}setsid();sa.sa_handler=SIG_IGN;sigemptyset(&sa.sa_mask);if(sigaction(SIGHUP,&sa,NULL)<0){sys_err("sigaction error");}if((pid=fork())<0){sys_err("fork error");}else if(pid!=0){exit(0);}if(chdir("/")<0){sys_err("chdir error");}if(rl.rlim_max==RLIM_INFINITY){rl.rlim_max=1024;}for(i=0;i<rl.rlim_max;i++){close(i);}fd0=open("/dev/null",O_RDWR);fd1=dup(fd0);fd2=dup(fd1);if(fd0!=0||fd1!=1||fd2!=2){sys_err("dup error");}}
原文:http://www.cnblogs.com/yml435/p/4655452.html