Apue:daemon

daemon特性

注意大部分的守护进程都有超级用户特权。没有一个守护进程具有控制终端。
内核守护进程以无控制终端方式启动。
用户守护进程缺少控制终端有可能是调用了setsid。所有用户守护进程都是进程组的组长进程以及会话的首进程,而且是这些进程组合会话中的唯一进程。

daemon编程准则

1.调用umask(0),把屏蔽字设置为0。这样做是为了防止继承来的文件屏蔽字可能会拒绝设置某些权限。
2.调用fork,并且是父进程exit。这样是为了让调用这个程序的东西(例如shell)可以乘早知道父进程终止,从而尽早返回。因为我们要生成的是一个daemon。并且fork之后,子进程的ID改变了,这样它就不会是一个进程组的组长,从而可以使得我们调用第三步中的setsid
3.调用setsid创建一个会话。调用setsid之后,进程就变成了一个会话的首进程,一个新进程组的组长,并且没有控制终端。
4.将当前目录更改为根目录。从父进程继承过来的目录可能是mount在别的文件系统中,在操作系统启动的时候,我们只mount了根目录,所以daemon进程需要把当前目录更改为根目录,否则就有可能造成工作目录还没有mount的情况。
5.关闭不需要的文件描述符。
6.一些守护进程让0,1,2号文件描述与/dev/null相关联,这样任何一个试图读写的库例程都不会产生任何效果。

出错日志

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值