守护进程的编程规则
来源:互联网 发布:计算机技术与软件 职称 编辑:程序博客网 时间:2024/05/19 17:02
要理解守护进程的编程规则必须先搞明白进程组、会话、组长进程等关系。
1.进程组
每个进程除了有一个进程ID之外,还属于一个进程组。进程组是一个或者多个进程的集合。每个进程组都有一个组长进程。组长进程的标识是,其进程ID和进程组ID相等。
2.会话
会话是一个或者多个进程组的集合。
进程可以调用setsid(void)创建一个新会话,如果调用此函数的进程不是一个进程组的组长,则此函数就会创建一个新会话,结果将发生下面三件事:
1)该进程编程新会话的首进程(会话首进程是创建该会话的进程),此时,该进程是新会话中的唯一进程。
2)该进程成为一个新进程组的组长进程,新进程组的ID是该调用进程的进程ID
3)该进程没有控制终端。如果在调用setsid之前有控制终端,这种联系也会中断。这刚好满足守护进程的规则,我们可以预想到,要编写守护进程需要调用setsid。
注意,如果该调用进程本身是进程组的组长,调用setsid返回错误。为了不保证发生这种情况,通常先fork,然后使其父进程终止,而子进程则继续。
3.守护进程的编程规则
(1)调用umask将文件模式创建屏蔽字设置为0
(2)调用fork,父进程退出,然后调用setsid()
(3)将工作目录改为根目录。从父进程继承来的当前工作目录可能在一个装配文件系统中,因为守护进程通常在系统再引导之前是一直存在的,所以如果守护进程的当前工作目录在一个装配文件系统中,那么该文件系统不能被卸载,这与装配文件系统的原意不符。
(4)关闭需要的文件描述符。这使得守护进程不再持有从其父进程继承而来的文件描述符,可以使用open_max()或者getrlimit()来判定最高文件描述符的值,并关闭所有到該值的描述符
(5)重定向标准输入、输出、错误输出
- 守护进程的编程规则
- 守护进程的编程规则
- Linux守护进程的编程规则
- 守护进程(daemon)编程规则
- 守护进程之编程规则
- 守护进程(daemon)编程规则
- Linux守护进程编程规则
- 守护进程的编程规则(学fork必看)
- Linux守护进程(daemon)编程规则
- 守护进程的编程方法
- 守护进程的编程方法
- 守护进程的编程要点
- Linux守护进程的编程
- Linux守护进程的编程
- Linux守护进程的编程方法
- Linux 守护进程的编程方法
- Linux 守护进程的编程方法
- [转]Linux 守护进程的编程方法
- 嵌入式 uboot第二阶段启动流程小结以及在uboot添加自定义命令
- 构造函数详解
- 关于“vmware tools installation cannot be started manually while easy install is in progress”问题的解决
- JS作用域与作用域链
- (新浪)微博(iPad)客户端怎么查看已经收藏的微博
- 守护进程的编程规则
- [MFC] 对话框右上角的红叉与[取消]按钮是绑定的
- Android 滑动切换页面 以及屏幕手势
- const char*, char const*, char*const的区别
- 生命周期——Activity和Fragment
- hdoj2016
- PHP从零单排(九)在PHP中生成cookie
- OpenCV->HSV色彩空间
- Hybrid App开发实战