Intern Day89 - Linux下的僵尸进程和孤儿进程
fork函数
-
fork函数调用次数:一次会运行/返回2次,一次是父进程运行的,一次是子进程运行的,谁先运行顺序不一定,由操作系统调度器说了算。
-
fork函数调用返回值:等于0的是子进程,返回值大于0的是父进程。
-
fork函数作用:从已经存在的进程(父进程)中创建一个子进程。
-
fork后执行代码的顺序一定是先子进程后父进程吗?不是,这完全看CPU调度。
注意
UID = 用户ID,PID = 进程ID,PPID = 父进程ID
僵尸进程
概念:简单来说,就是 子进程先退出父进程后退出 的情况。一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。
僵尸进程的坏处:造成资源的浪费。(因为如果大量的产生僵死进程,会因为没有可用的进程号而导致系统不能产生新的进程.)
解决僵尸进程的办法:在父进程调用 wait()
或者 waitpid()
函数( waitpid()
会暂时停止目前进程的执行,直到有信号来到或子进程结束)来释放掉子进程的退出信息。
孤儿进程
概念:简单来说,“孤儿”就是子进程,所以“孤儿进程”就是 父进程先退出子进程再退出 的情况,然后该子进程会由进程号为1的init进程所收养。一个父进程退出,而它的一个或多个子进程还在运行。
孤儿进程的坏处:不会有什么危害。(因为init进程会作为他们的父进程对他们进行处理。)
解决孤儿进程的办法:Linux避免系统存在过多的孤儿进程,init进程收留孤儿进程,变成孤儿进程的父进程。相当于有了个继父。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」