Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1363
  • 博文数量: 2
  • 博客积分: 50
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-03 23:50
文章分类
文章存档

2012年(2)

我的朋友
最近访客

分类: 系统运维

2012-02-23 23:27:21

(1)首先要调用umask将文件模式创建屏蔽字设置为0。由继承得来的文件模式创建屏蔽字有可能会拒绝设置某些权限。例如,若守护进程要创建一个组可读可写的文件,而继承来的文件模式创建屏蔽字刚好屏蔽了这两种权限。于是导致所要求的组可读可写不起作用。
(2)调用fork,然后使用exit是父进程退出。这样做实现了一下两点要求:第一,如果该守护进程是作为一条简单的shell命令执行的,那么父进程终止是的shell认为这条命令已经执行结束了。第二,子进程继承了父进程的进程组ID,但还具有一个新的进程ID,这就保证了子进程不是一个进程组的组长进程。这是下面要做到调用setsid()的必要前提条件。
(3)调用setsid以创建一个新会话。使调用进程 a)成为新会话组的首进程 b)成为一个新进程组的组长进程 c)没有控制终端。
(4)将当前目录设置为根目录。从父进程继承过来的工作目录可能在一个装配文件系统中。因为守护进程在系统再引导之前是一直存在的,所以如果守护进程的当前工作目录在一个装配系统中,那么该文件系统不能拆卸。这与装配文件系统的原意不符。另外,某些守护进程可能会把当前目录变更到某个指定位置,在哪里做它们的工作。例如,行式打印机假脱机守护进程常常将工作目录更改到他们的spool目录上。
(5)关闭不再需要的文件描述符。
阅读(226) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:进程间通信常用技术及函数

给主人留下些什么吧!~~