linux下的守护进程

一、概念
精灵进程,是linux中的后台服务进程,生存周期较长的进程,通常独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。
二、 模型
1.1 为什么有守护进程的存在?
守护进程是脱离于控制终端并且在后台周期性地执行某种任务或等待处理某些事件的进程,脱离终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的中断信息所终止。

若守护进程没有和控制终端脱离,若别不小心把控制终端脱离,则守护进程也会结束,

1.2 守护进程编程步骤:
1.创建子进程,父进程退出
所有工作在子进程中进行
形式上脱离了控制终端
2.在子进程中创建新会话
Setsid()函数
使子进程完全独立出来,脱离控制
3. 改变当前目录为根目录
Chdir()函数
防止占用可卸载的文件系统 eg:u盘
也可以换成其他路径
4.重设文件权限掩码
umask()函数
防止继承的文件创建屏蔽字拒绝某些权限
增加守护进程灵活性
5.关闭文件描述符
继承的打开文件不会用到,浪费系统资源,无法卸载
6.开始执行守护进程核心工作
7.守护进程退出处理

服务器启动后,会占据终端,导致不能和终端进行交互,设计一个进程,后台运行,启动程序后,不占用终端,我们依然可以输入命令,进行交互。

守护进程是生存期长的一种进程。他们常常在系统引导装入时启动在系统关闭时终止。 所有守护进程所以超级用户(用户ID为0)优先权运行
守护进程没有控制终端(不用标准输入、输出) 守护进程的父进程都是init进程

三、代码:
在这里插入图片描述
**参考资料:**http://blog.chinaunix.net/uid-20937170-id-5748313.html

发布了93 篇原创文章 · 获赞 45 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41431406/article/details/98938467