/*setid.c*/ #include <unistd.h> #include <stdio.h> #include <stdlib.h> //要创建守护进程,但是守护进程不能为程序的第一个进程,该进程不能为进程组的leader int main (void) { //首先fork一个子进程作为setsid的leader进程 pid_t p = fork(); if (p < 0) { perror("fork error"); exit(1); } //发现是父进程就直接退出 if (p != 0) { exit(1); } else { //在子进程处创建session_id setsid(); } /* * 将文件描述符0,1,2重新定位到/dev/null,切换文件访问目录到’/‘根目录下 * 同样的操作被一个函数包装: * chdir(“/”) * close(0) * open("/dev/null", O_RDWR) * dup2(0, 1) * dup2(0, 2) */ daemon(0, 0); while(1); //不断的穷忙 }
浙公网安备 33010602011771号