如何将程序以Daemon方式运行? 以Daemon方式运行的程序,在运行过程中与控制台无关,即不受控制台信号影响,在控制台退出后也继续保持运行,而其他非Daemon程序会受控制台操作影响,并在控制台退出时被强行退出。因此网络服务程序绝大多数都是以Daemon方式运行。 可以在程序初始化时加入以下语句,则程序将以Daemon方式运行: /**/ /* 生成一个新的进程并将原来的主进程退出 */ if (fork()) exit( 0 ); /**/ /* 关闭 stdin, stdout, stderr 等控制台句柄 */ for (n = 0 ; n < 3 ; n ++ ) close(n); /**/ /* 将 stdin, stdout和stderr均指向/dev/null */ open( " /dev/null " , O_RDONLY); dup2( 0 , 1 ); dup2( 0 , 2 ); /**/ /* 设置tty的I/O属性 */ if ((n = open( " /dev/tty " ,O_RDWR)) > 0 ) ... { ioctl(n, TIOCNOTTY, 0) ; close(n); } /**/ /* 创建一个新的session,使当前进程成为一个process greoup的leader */ setsid(); /**/ /* 生成一个新的进程并将刚才生成的进程退出,这个新的进程已经以daemon方式运行了 */ if (fork()) exit( 0 );