java 僵尸进程_僵尸进程ZOMBIE

2023-10-28

僵尸进程是指它的父进程已经退出(父进程没有等待(调用wait/waitpid)它),而该进程dead之后没有进程接受,就成为僵尸进程,也就是(zombie)进程。

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

在Linux进程的状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其他进程收集,除此之外,僵尸进程不再占有任何内存空间。它需要它的父进程来为它收尸。

如果他的父进程没安装SIGCHLD信号处理函数调用wait或waitpid()等待子进程结束,又没有显式忽略该信号[参见APUE 10.7],那么它就一直保持僵尸状态,如果这时父进程结束了,那么init进程自动会接手这个子进程,为它收尸,它还是能被清除的。

但是如果父进程是一个循环,不会结束,那么子进程就会一直保持僵尸状态,这就是为什么系统中有时会有很多的僵尸进程。系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程.

僵尸进程的避免

1、父进程通过wait和waitpid等函数等待子进程结束,这会导致父进程挂起

2、如果父进程很忙,那么可以用signal函数为SIGCHLD安装handler,因为子进程结束后,父进程会收到该信号,可以在handler中调用wait回

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 僵尸进程_僵尸进程ZOMBIE 的相关文章

随机推荐

  • 用 Qt Designer 创建可扩展对话框

    前面我们设计的对话框都是不能改变它的样子的 但是有时需要对话框根据要求进行适当的改变 两个最常用的需要改变的对话框是可扩展对话框和多页对话框 这两种类型的可以通过代码编写 也可以用Qt Designer 设计 一个例子如下图所示 图 1 可
  • 记录在安装wsl途中遇到的一些坑

    前情 因为要给公司的电脑搭建编译环境 其中需要wsl环境 结果搭建的过程踩到了很多坑 在此记录一下 小白一个 目前只会简单的搭建一下环境 1 wsl1升级为wsl2 起因 想给自己电脑的wsl1升级为wsl2 在powershell里执行了
  • STM32设置为I2C从机模式(HAL库版本)

    STM32设置为I2C从机模式 HAL库版本 目录 STM32设置为I2C从机模式 HAL库版本 前言 1 硬件连接 2 软件编程 2 1 步骤分解 2 2 测试用例 3 运行测试 3 1 I2C连续写入 3 2 I2C连续读取 3 3 I
  • 后端data的存储

    一 数据的格式 创建一个名为data的文件夹 创建文件userlist json的文件用来存储数据 7w username 7w password 6512bd43d9caa6e02c990b0a82652dca create time 2
  • NJU-ICS-linklab 从零开始复习程序的链接与ELF

    linklab实验记录 实验题目及材料 https github com qmj0923 NJU ICS linklab 实验环境 debian 10 5 0 i386 netinst虚拟机 gcc Debian 8 3 0 6 8 3 0
  • 【算法竞赛宝典】插入排序

    算法竞赛宝典 插入排序 题目描述 伪代码 代码展示 代码讲解 题目描述 伪代码 代码展示 插入排序数 请自己根据例程修改 include
  • pycharm Git reset

    天下苦不会用git久矣 所以记录一下 一 回到原先某一时刻版本 如果后面的commit都不想要了 就想回到前面的某个时间 在本地要 在远程也得改head 在local命令利用 git push origin HEAD force
  • Web安全—暴力破解(pikachu)

    Web安全 暴力破解 BurteForce 前言 弱口令yyds 暴力破解虽然是一种原理特别简单的漏洞 其利用方式也非常简单 但其危害却十分巨大 如果我们通过信息阶段找到Web应用的后台登陆页面 然后通过弱口令 暴力破解登陆 那这个Web应
  • Git(六):基本命令(3):储藏、标签、拉取、子模块

    目录 17 stash 储藏 17 2 描述 17 3 基本用法 18 tag 标签 18 1 描述 18 2 基本用法 19 fetch 获取 19 1 描述 19 2 基本用法 20 pull 整合 20 1 描述 20 2 基本用法
  • ' not supported between instances of 'str' and 'float'' aria-label='TypeError: '>' not supported between instances of 'str' and 'float''> TypeError: '>' not supported between instances of 'str' and 'float'

    目录 含义 出现原因 情况一纠正措施 情况二纠正措施 含义 类型错误 浮点数和字符串之间无法比较 出现原因 出现这种错误类型 目前遇到了两种情况 如下 一 对excel的两列数据进行字典键与键值对应操作时 键值列数据既存在浮点数类型又存在字
  • Callable接口、Runable接口、Future接口

    1 Callable与Runable区别 Java从发布的第一个版本开始就可以很方便地编写多线程的应用程序 并在设计中引入异步处理 Thread类 Runnable接口和Java内存管理模型使得多线程编程简单直接 但Thread类和Runn
  • 蓝桥杯评分标准_蓝桥杯比赛要求

    七 奖项设置及评选办法 7 1 省赛 1 参赛选手奖 省赛每个组别设置一 二 三等奖 比例分别为 10 20 30 总比例为实际参赛人数 的 60 零分卷不得奖 省赛一等奖选手获得直接进入全国总决赛资格 所有获奖选手均 可获得由工业和信息化
  • ABA问题及解决

    ABA问hiyi题 在多线程环境下 一个线程需要修改共享变量的值 使用CAS操作时 当其他线程将该共享变量由A该为B 再将B改为A后 这个线程依然可以CAS操作成功 因为这个线程不能感知这个共享变量被修改过 解决方法 给共享变量增加一个版本
  • spring cloud gateway项目启动报错

    spring cloud gateway项目启动报错 Correct the classpath of your application so that it contains a single compatible version of
  • Nginx之keepalive配置解读

    目录 keepalive基础介绍 Nginx中的keepalive配置项 应用场景 什么时候使用 什么时候不用 keepalive基础介绍 keepalive是HTTP 1 1协议中的一个特性 它允许客户端和服务器之间的TCP连接在一个HT
  • 使用file.transferTo(tempFile)保存文件,第二次操作时却报错:请求的操作无法在使用用户映射区域打开的文件上执行。

    背景是我要做个后台管理上表格的导入导出excel的功能 导出没有什么问题 但一到导入就开始出了问题 我用的是xxl excel工具 在导入时接收一个MultipartFile file 然后new一个新文件 再利用file transfer
  • 8-js高级-3

    JavaScript 进阶 3 了解构造函数原型对象的语法特征 掌握 JavaScript 中面向对象编程的实现方式 基于面向对象编程思想实现 DOM 操作的封装 编程思想 构造函数 原型 综合案例 编程思想 学习 JavaScript 中
  • pclint入门

    1 安装 将压缩包比如pclint8 zip拷贝到c 解压后重命名目录为c pclint 版本 Q 如何查看版本 A 见readme txt PC lint for C C Version 8 00e 2 开始使用 2 1 不用任何配置 直
  • 第十二章:使用C语言(Python语言)操作Sqlserver2019数据库

    目录 一 连接数据库的准备工作 二 使用 ODBC 连接数据库 1 ODBC 数据源简介 2 配置 ODBC 数据库源 3 连接数据库函数 4 C 语言通过 ODBC 操作数据库 三 非 ODBC 方式操作数据库 3 1 删除 修改 插入数
  • java 僵尸进程_僵尸进程ZOMBIE

    僵尸进程是指它的父进程已经退出 父进程没有等待 调用wait waitpid 它 而该进程dead之后没有进程接受 就成为僵尸进程 也就是 zombie 进程 一个进程在调用exit命令结束自己的生命的时候 其实它并没有真正的被销毁 而是留