守护进程:后台运行与文件描述符管理
需积分: 34 108 浏览量
更新于2024-08-25
收藏 970KB PPT 举报
"这篇文档主要讨论的是如何关闭打开的文件描述符,特别是在守护进程的上下文中。守护进程是在后台运行的、与终端无关联的进程,通常用于执行系统管理任务。在守护进程的实现过程中,确保正确关闭文件描述符是非常重要的,因为这不仅能够释放系统资源,还能避免不必要的错误和文件系统卸载问题。
守护进程的特点在于其后台运行的性质,需要与初始运行环境隔离,包括文件描述符、控制终端、会话、进程组、工作目录和文件创建掩模等。这些环境通常是从父进程(尤其是shell)那里继承的。守护进程的启动方式多样,有的在系统初始化时由脚本启动,有的由inetd超级服务器启动,还有的可以由用户终端直接启动。
在处理消息时,由于守护进程没有控制终端,所以通常会使用syslog函数将消息发送到syslog守护进程,以便记录和通知。对于消息的类型,既有常规的通告,也有紧急事件通知,需要管理员进行处理。
在进程管理中,进程属于一个进程组,进程组号是组长的进程号。通过setpgid系统调用可以改变进程所属的进程组或创建新的进程组。会话期可以包含多个进程组,而登录会话有一个控制终端,这个终端通常对应用户的登录终端。当控制终端断开时,会向控制进程发送SIGUP信号。
创建守护进程的关键步骤之一是调用setsid系统调用,这将创建一个新的会话,使得进程成为新会话的组长和进程组组长,从而彻底脱离原来的终端控制。"
知识点如下:
1. 文件描述符:进程从父进程继承打开的文件描述符,如果不关闭,会浪费资源且可能导致文件系统无法卸载。
2. 守护进程:在后台运行,与终端无关联,常用于系统管理任务,需要脱离初始环境。
3. 关闭文件描述符:通过循环遍历并调用close函数来关闭所有文件描述符。
4. 守护进程启动:可以通过系统初始化脚本、inetd超级服务器或用户终端启动。
5. syslog:用于守护进程输出消息,特别在没有控制终端的情况下。
6. 进程组和会话期:进程属于一个进程组,会话期可以包含多个进程组,setsid用于创建新的会话。
7. 控制终端:会话期有一个控制终端,与主机断开时会发送SIGUP信号。
8. setsid系统调用:创建新的会话和进程组,帮助守护进程脱离终端控制。
2021-03-21 上传
2013-12-19 上传
2020-11-30 上传
2021-06-15 上传
点击了解资源详情
2007-09-01 上传
2021-03-30 上传
2021-07-16 上传
2020-09-15 上传
永不放弃yes
- 粉丝: 676
- 资源: 2万+
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码