僵尸进程

僵尸进程是指一个已经终止、但是其父进程尚未对其进行善后处理获取终止进程的有关信息的进程,这个进程被称为“僵尸进程”(zombie)。

怎样产生僵尸进程

一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用exit, 它的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁)。

在Linux进程的状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位 置,记载该进程的退出状态等信息供其他进程收集。除此之外,僵尸进程不再占有任何内存空间。它需要它的父进程来为它收尸,如果他的父进程没安装 SIGCHLD 信号处理函数调用wait或waitpid()等待子进程结束,又没有显式忽略该信号,那么它就一直保持僵尸状态,如果这时父进程结束了, 那么init进程自动会接手这个子进程,为它收尸,它还是能被清除的。但是如果如果父进程是一个循环,不会结束,那么子进程就会一直保持僵尸状态,这就是 为什么系统中有时会有很多的僵尸进程。

怎么查看僵尸进程

利用命令ps,可以看到有父进程ID为1的进程是孤儿进程;s(state)状态为Z的是僵尸进程。

#include<stdio.h>
#include<unistd.h>
#

UNIX(进程间通信):03---僵尸进程相关推荐

  1. UNIX(进程间通信):01---Linux进程通信方式

    Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的.而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间 ...

  2. Unix中的僵尸进程

    现实中的僵尸是一种似死非死的状态--一直在人间四处游走,但是却不能做一些活人能做的事情. 而对于僵尸进程,与这个有些类似,它不能像一般进程那样来执行程序.被调度而占用CPU,但是它却不能消失,因为它还 ...

  3. unix高级编程-僵尸进程和孤儿进程

    僵尸进程: 一个父进程利用fork创建子进程,如果子进程退出,而父进程没有利用wait 或者 waitpid 来获取子进程的状态信息,那么子进程的状态描述符依然保存在系统中. 孤儿进程:一个父进程退出 ...

  4. php apache 多进程,php多进程 防止出现僵尸进程 如何 使 apache 成为 僵尸进程

    php pcntl 僵尸进程怎么产生的一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用exit,它的作用是使进程退 ...

  5. 【进程控制(进程退出、孤儿进程、僵尸进程)_Linux】

    01 / 进程退出 02 / 孤儿进程 03 / 僵尸进程 04 / 进程回收 wait()函数 退出信息相关宏函数 waitpid()函数 01 / 进程退出 //标准C库函数 #include & ...

  6. linux ksh怎么查找僵尸进程,Unix 进程管理

    进程管理 如果用户在 UNIX 操作系统上执行了一个程序,那么操作系统会为这个程序创建一个运行它的特定环境.这个环境包含系统运行该程序所需的一切资源,使得好像系统中没有运行其他程序一样. 用户如果在 ...

  7. UNIX高级环境编程(9)进程控制(Process Control)- fork,vfork,僵尸进程,wait和waitpid...

    本章包含内容有: 创建新进程 程序执行(program execution) 进程终止(process termination) 进程的各种ID 1 进程标识符(Process Identifiers ...

  8. UNIX(进程间通信):04---孤儿进程

    上一篇文章讲过僵尸进程,这里再分享给大家另外一种状态. 孤儿进程      什么是孤儿进程? 当一个子进程还在执行时,它的父进程已经退出了,那么这个子进程的退出信息也没有被父进程接收到,如果子进程的退 ...

  9. linux shell中清理僵尸进程

    2019独角兽企业重金招聘Python工程师标准>>> 今天登录到服务器上时,系统打印有6 zombie processes存在,于是用kill -9去清理掉这些僵尸进程,命令执行完 ...

最新文章

  1. Java 11 正式发布!
  2. linux下程序执行的步骤及其作用
  3. 统计学常犯的18个错误,请务必跳过这些坑!
  4. 分布式锁,进程锁,线程锁到底是什么
  5. LeetCode 61——旋转链表
  6. .net 实时通信_【WebSocket】实时多人答题对战游戏
  7. Page Object设计模式实践
  8. 关于SQL Server的日期时间数据类型
  9. oracle10rac asm hpux,oracle 10g rac asm上面的控制文件损坏既增加方法
  10. 【时间序列分析】03.正态时间序列与严平稳序列
  11. php 搜索引擎 分词_怎么在php中使用scws实现一个中文分词搜索功能
  12. com4j学习(2):Visio自定义模具和形状,并添加连接点
  13. 网路安全之HTTP状态码
  14. 什么蓝标认证BLUESIGN?蓝标认证BLUESIGN怎么做?
  15. 量化交易策略matlab交易方案,Matlab量化交易策略之 GFTD+止损 附源码
  16. 网页中打开pdf、doc、ppt、xsl、sxw、ods、odp相关代码
  17. Java使用Calender类实现打印日历(指定月份和年)
  18. 服务器错误码显示,常见错误码说明
  19. ArcGIS中的投影、定义投影及动态投影
  20. 图像识别DM8127开发攻略 ——RDK软件架构浅析及编译

热门文章

  1. 实例解析linux内核I2C体系结构(2)
  2. php微信模板信息发送的代码例子,微信模板消息发送样例
  3. 任务管理平台_软件品质评测系统任务分发管理平台
  4. 十字路口红绿灯plc程序_实例讲解红绿灯PLC程序设计方法
  5. 【转】DIB位图(Bitmap)的读取和保存
  6. [转载]基于TFS实践敏捷-修复Bug和执行代码评审
  7. php隐藏webshell_PHP 安全的十个必备技巧
  8. Qt-VS开发:解决VS中使用带有信号槽的导出对象库时,信号槽不工作的问题
  9. Qt undefined reference to,Error 255,找不到库函数的解决办法
  10. PWN-PRACTICE-BUUCTF-18