[ZZ]如何将程序以Daemon方式运行?

如何将程序以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 );   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值