孤儿进程与僵尸进程

进程退出

关于进程退出有两个函数

exit和 _exit:其主要差别是在于是否直接退出。

其流程主要区别如下:

孤儿进程(不存在危害)

  • 父进程运行结束,但子进程还在运行(未运行结束),这样的子进程就称为孤儿进程。
  • 每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为 init ,而 init 进程会循环地 wait()它的已经退出的子进程。这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init 进程就会代表党和政府出面处理它的一切善后工作。

僵尸进程(有危害)

  1. 每个进程结束之后, 都会释放自己地址空间中的用户区数据。但是子进程的内核区的 PCB 没有办法自己释放掉,需要父进程去释放。
  2. 子进程终止时,父进程因为种种原因无法回收,子进程残留资源(PCB)存放于内核中,变成僵尸(Zombie)进程。
  3. 僵尸进程不能被 kill -9 杀死,这样就会导致一个问题,如果父进程不调用 wait() 或 waitpid()的话,那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵尸进程,将因为没有可用的进程号而导致系统不能产生新的进程,此即为僵尸进程的危害,应当避免。

解决方法:

通过wait() 和 waitpid() 函数。这两个函数功能一样,区别在于,wait() 函数会阻塞,

waitpid() 可以设置不阻塞,waitpid() 还可以指定等待哪个子进程结束。

注意:一次wait或waitpid调用只能清理一个子进程,清理多个子进程应使用循环。

相关推荐
砚凝霜1 小时前
【软考信息安全】第二十二章 Web服务器安全分析与增强——Apache与IIS
服务器·前端·安全
Android系统攻城狮1 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_delay调用流程与实战(七十二)
linux·运维·服务器·gstreamer音视频·音视频进阶
快乐的韭菜根根2 小时前
ubuntu 安装slurm并配置
linux·运维·ubuntu
数字新视界2 小时前
机房动环监控提升运维效率
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
U-Mail邮件系统2 小时前
自建邮箱服务器有哪些软件?三款主流邮件服务器软件推荐
运维·服务器
倒头就睡的小比特3 小时前
Linux基础指令3
linux·服务器
Smoothcloud润云4 小时前
PyTorch推理服务模型热切换与失败回滚实战:降低版本更新中断
服务器·人工智能·pytorch·python·深度学习·gpu
天远数科4 小时前
零信任架构实战:基于天远贷前风险报告构建自动化消金信贷风控与多头共债排查网关
运维·人工智能·架构·自动化
梦帮科技4 小时前
Kali Linux Scapy 畸形报文构造学——深度解剖非法 TCP Flags 与反常序列号
linux·爬虫·神经网络·算法·数学建模·系统架构·模拟退火算法
半杯咖啡半行码5 小时前
Linux 驱动开发入门:内核模块编程基础
linux·服务器·网络