首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
第56天 特殊进程
📅 2026/10/27 10:24:31
✍️ 爱科研究院
👁 阅读 3,247
一.孤儿进程1.定义当一个进程的父进程先于它终止这个进程就会成为孤儿进程2.产生原因父进程意外崩溃、被强制终止(如kill -9)或父进程主动退出但未正确处理子进程3.特点1.失去父进程后会被系统的“祖先进程”(linux中是init或systemPID1)收养2.仍能正常运行完成自身任务后会正常终止不会占用额外资源4.影响本身是系统正常处理机制的结果无负面影响反而避免了进程成为“无主进程”例如若父进程因bug崩溃子进程被init收养后可继续提供服务二.僵尸进程1.定义进程终止后内核未释放其进程控制块(PCB)该进程状态变为Z(僵尸态)成为僵尸进程2.产生原因父进程未调用wait()或waitpid()等系统调用读取子进程的退出状态(如退出码、终止原因) 导致内核无法回收PCB3.特点已终止运行不再执行任何代码但PCB仍占用内存资源(如PID、退出状态)通过ps命令中显示状态为Z或者是Z(僵尸态)名称可能为defunct4.影响系统PID数量有限大量僵尸进程会耗尽PID资源导致新进程进行无法创建不占用用户空间的内存数据段但内核空间的PCB资源仍被占用且无法使用5.处理方式预防父进程调用wait()/waitpid()主动回收子进程状态清除kill -9无法直接杀死僵尸进程(其已终止无运行实体) 父进程未处理可终止父进程(僵尸进程被1号进程收养1号进程会定期回收其PCB)三.守护进程1.定义运行在后台的特殊进程独立于控制终端用于持续提供系统服务2.设计目的不受用户登录/注销影响长期稳定运行(如网络服务、定时任务)3.特点脱离终端无控制终端避免终端关闭导致进程终止后台运行通过ps命令查看状态通常为S(休眠)名称多以d结尾(如httpd、systemd)父进程为1号进程启动后会与原本父进程脱离被1号进程收养环境干净默认不继承终端信号工作目录通常为\文件描述符(如stdin/stdout/stderr)被关闭或重 定向到/dev/null1.守护进程创建流程1.父进程fork()后exit退出子进程成为孤儿进程被1号进程收养2.子进程调用setsid()函数创建新会话,脱离原终端控制3.调用chdir()函数改变进程的工作目录到一个不会被删除和卸载的目录下4.使用umask函数修改创建文件的掩码5.关闭所有父进程继承过来的文件描述符集合 close6.使用dup或者dup2将标准输入/标准输出/标准出错都重定向到文件中7.开启自己的服务2.setsid函数#include sys/types.h#include unistd.hpid_t setsid(void);创建一个新会话并让调用该函数的进程成为这个新会话的首进程同时也成为新进程组的组长返回值成功返回调用进程的新会话标识符失败-1重置错误码3.chdir()函数#include unistd.hint chdir(const char *path);将调用进程的当前路径修改为参数所指定的目录path 新的工作目录返回值成功0失败-1重置错误码4.umask函数#include sys/types.h#include sys/stat.hmode_t umask(mode_t mask);修改进程文件的掩码mask 新的掩码实际文件权限~mask0666实际目录权限~mask0777返回值总是成功返回之前的掩码四.区别孤儿进程Orphan Process僵尸进程Zombie Process守护进程Daemon Process定义父进程先于子进程退出子进程被1号进程收养的进程。子进程先退出父进程未调用wait/waitpid回收其PCB导致进程状态为Z的进程脱离控制终端在后台长期运行的系统服务进程如sshd,nginx产生原因父进程意外退出或主动退出未等待子进程子进程退出后父进程未调用wait/waitpid回收其退出状态程序主动调用setpid等函数创建脱离终端并后台运行进程状态正常运行状态ppid1僵尸状态标记为defunct后台运行状态无控制终端名称常以d结尾如httpd资源占用占用正常进程资源(代码/数据/PCB仅占用PCB资源PID、退出状态不占用代码段/数据段占用正常进程资源长期稳定运行危害无直接危害被1号进程正常管理大量积累会耗尽PID资源导致新进程无法创建无危害是系统正常运行的必要服务如网络服务定时任务处理方式无需手动处理1号进程会自动回收其资源父进程调用wait/waitpid主动回收终止父进程由1号进程回收。无需处理随系统启动而启动终止而终止可通过systemctl等工具管理典型场景父进程未等待子进程就退出如脚本中后台运行的子进程父进程长期运行且未处理子进程退出如服务器程序漏洞系统服务如sshd,crond,ngix
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/27 10:24:30
langchain 中间件
2026/10/27 10:24:29
小白程序员轻松入门大模型开发:从实践到上手的完整学习路线
2026/10/27 10:19:21
【零基础学智能仿真-58】Foam-Agent协作与知识检索
2026/10/27 12:40:37
OpenCV颜色空间转换:BGR与RGB的实战解析
2026/10/27 12:40:37
Linux权限管理:从基础到实战避坑指南
2026/10/27 12:40:37
AI服务稳定性诊断的三层漏斗法:模型层、Harness层、运行额度层
2026/10/27 12:40:37
Windows下C++项目glog日志库深度适配指南
2026/10/27 12:40:37
Ponytail插件:前端构建产物优化,削减CSS/JS体积与懒加载
2026/10/27 12:35:36
GPT-3数据训练真相:Prompt工程、上下文注入与微调实战指南
2026/10/27 0:04:20
WorkBuddy_新建任务与工作模式19_“模式选错”的典型代价
2026/10/27 0:04:20
WorkBuddy_新建任务与工作模式20_新手推荐路径
2026/10/27 0:04:20
ZerolanLiveRobot开发者指南:如何扩展一个新服务并注册自定义事件(附完整实战示例)
2026/10/27 11:41:45
全国计算机二级C语言真题PDF高效刷题指南
2026/10/27 9:24:40
requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南
2026/10/27 12:03:45
递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现
2026/10/25 22:15:16
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/26 11:29:48
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/25 12:42:56
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)