僵尸进程与孤儿进程

僵尸进程

  • 僵尸进程是已经终止执行的进程,但其父进程尚未对它进行善后处理(即收回其资源和终止它)的状态。
  • 当一个进程终止时,内核会向其父进程发送一个信号,告知其子进程的终止状态,父进程需要调用 wait 或 waitpid 等系统调用来获取子进程的终止状态信息。
  • 如果父进程没有调用这些系统调用来处理子进程的终止状态,那么子进程就会成为僵尸进程,其进程描述符仍然存在于系统中,但不再执行任何代码
  • 僵尸进程占用了系统资源,需要及时被清理

孤儿进程

  • 孤儿进程是指其父进程已经终止或不存在,而它的一个或多个子进程还在运行,那么这些子进程就成为孤儿进程(father died)。
  • 子进程的资源由init进程(进程号PID = 1)回收

僵尸进程与孤儿进程的区别

  • 僵尸进程仍然有一个父进程,但父进程未能及时处理子进程的终止状态;而孤儿进程没有父进程或其父进程已经终止
  • 僵尸进程的进程描述符仍然存在于系统中,占用了系统资源;而孤儿进程的进程描述符会被 init 进程接管,不会占用系统资源
  • 僵尸进程需要父进程调用 wait 或 waitpid 等系统调用来释放其资源;而孤儿进程则由 init 进程负责善后处理,释放其资源。

僵尸进程的处理

1.父进程使用 waitwaitpid 系统调用:

  • 父进程可以使用 wait 或 waitpid 系统调用来等待子进程的终止并获取其终止状态信息。
  • 这些系统调用会阻塞父进程,直到有子进程终止为止。
  • 当父进程调用这些系统调用后,内核会回收僵尸进程的资源,并从系统中移除该进程。

2.父进程捕获 SIGCHLD 信号:

  • 父进程可以通过捕获 SIGCHLD 信号来处理子进程的终止状态。
  • 当父进程收到 SIGCHLD 信号时,可以调用 wait 或 waitpid 系统调用来获取子进程的终止状态。
  • 在信号处理函数中,可以执行相应的清理操作,包括回收子进程的资源。

3.使用 SIG_IGN 忽略 SIGCHLD 信号:

  • 父进程可以通过将 SIGCHLD 信号的处理方式设置为 SIG_IGN(忽略)来告知内核,父进程对子进程的终止状态不感兴趣。
  • 这样,当子进程终止时,内核会自动处理僵尸进程的资源回收。
  • 但需要注意,这种方法只适用于父进程对子进程终止状态不关心的情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/173247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Echarts+Vue+dataV 首页大屏静态示例Demo

效果图: <template><div class="content bg"><!-- 全屏容器 --><!-- 第一行 --><div class="module-box"><div style="flex: 0 1 30%"><dv-decoration-10 style="height: 5px" />&…

【运营思维】美团面试题:如何把梳子卖给寺庙和尚?

Hello 小米的小伙伴们~ 欢迎来到小米的微信公众号&#xff01;今天小米要和大家分享一道美团运营面试题&#xff0c;题目可真是独特——“如何把梳子卖给寺庙和尚&#xff1f;”想必大家一定兴奋不已吧&#xff01; 首先&#xff0c;让我们理清思路&#xff0c;挑战这个看似不…

ubuntu20.04安装tensorRT流程梳理

目标&#xff1a;先跑demo&#xff0c;再学习源码 step1, 提前准备好CUDA环境 安装CUDA&#xff0c;cuDNN 注意&#xff0c;CUDA&#xff0c;cuDNN需要去官网下载.run和tar文件安装&#xff0c;否则在下面step4 make命令会报找不到cuda等的错误&#xff0c;具体安装教程网上…

有趣!谷歌AI认定阿波罗登月“造假“

大家好&#xff0c;我是极智视界&#xff0c;欢迎关注我的公众号&#xff0c;获取我的更多前沿科技分享 邀您加入我的知识星球「极智视界」&#xff0c;星球内有超多好玩的项目实战源码和资源下载&#xff0c;链接&#xff1a;https://t.zsxq.com/0aiNxERDq 事情是这样的&#…

Java的stream流

stream流常用操作&#xff0c;当作笔记&#xff0c;有更好玩的再加&#xff01; package com.azure.stream;import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors;public class ListCalculate {public stati…

python每日一题——9找到字符串中所有字母异位次

题目 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 示例 1: 输入: s “cbaebabacd”, p “abc”…

JSON.stringify,JSON.parse

JSON.stringify(value, replacer, space)&#xff1a;这个方法将 JavaScript 对象转化为 JSON 字符串。 value&#xff1a;必需&#xff0c;需要转化为 JSON 字符串的值。replacer&#xff1a;可选&#xff0c;一个函数或者数组&#xff0c;用来过滤或转换对象的属性。space&am…

vue.js如何根据后台返回来的图片url进行图片下载

原创/朱季谦 最近在做一个前端vue.js对接的功能模块时&#xff0c;需要实现一个下载图片的功能&#xff0c;后台返回来的是一串图片url&#xff0c;试了很多种方法&#xff0c;发现点击下载时出来的效果&#xff0c;都是跳到一个新的图片网页&#xff0c;后来经过一番琢磨&…

华为OD机试真题-分月饼-2023年OD统一考试(C卷)

题目描述: 题目描述: 中秋节,公司分月饼,m个员工,买了n个月饼,m<=n,每个员工至少分1个月饼,但可以分多个,单人分到最多月饼的个数是Max1,单人分到第二多月饼个数是Max2,Max1-Max2 <= 3,单人分到第n-1多月饼个数是Max(n-1),单人分到第n多月饼个数是Max(n),M…

23款奔驰E300L升级23P驾驶辅助 智驾出行 缓解开车疲劳

辅助驾驶越来越多的被大家所青睐&#xff01;为了提升驾驶安全性和舒适便捷性奔驰改装原厂半自动驾驶23P辅助系统 23P智能辅助驾驶系统还是很有必要的&#xff0c;因为在跑高速的时候可以使用23P智能驾驶的自动保持车速&#xff0c;保持车距&#xff0c;车道自动居中行驶以及自…

SELinux零知识学习三十三、SELinux策略语言之角色和用户(4)

接前一篇文章:SELinux零知识学习三十二、SELinux策略语言之角色和用户(3) 三、SELinux策略语言之类型强制 SELinux提供了一种依赖于类型强制(类型增强,TE)的基于角色的访问控制(Role-Based Access Control),角色用于组域类型和限制域类型与用户之间的关系,SELinux中…

每日一练 | 华为认证真题练习Day21

Day21 华为认证中级考试真题 1、VXLAN本身与SDN技术没有关系。 A.正确 B.错误 2、对Agile Controller的准入控制技术的应用场景的描述&#xff0c;错误的是 A.MAC认证中&#xff0c;用户终端以MAC地址作为身份凭据认证服务器上进行认证。MAC地址认证主要用于IP电话、打印机…

CountDownLatch实战应用——批量数据多线程协调异步处理(子线程执行事务回滚)

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; CountDownLatch实战应用——批量数据多线程协调异步处理(子线程执行事务…

【UnLua】在 Lua 中定义 UE 反射类型

【UnLua】在 Lua 中定义 UE 反射类型 用法 启动编辑器时遍历 Defines 目录下 lua 脚本来加载 UE 反射类型&#xff08;开个临时的 Lua VM 即可&#xff09;直接像 -- define a uenum in lua UEnum.EEnumGuestSomethingElse {Value1 1;Value2 2; }-- use it like a native …

NX二次开发UF_CURVE_ask_ocf_data 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_ocf_data Defined in: uf_curve.h int UF_CURVE_ask_ocf_data(tag_t feature, UF_CURVE_ocf_data_p_t * offset_data ) overview 概述 Returns the offset data for …

Halcon Solution Guide I basics(4.1): Blob Analysis 自主练习

文章目录 文章专栏前言自主练习题目输出电路板焊点个数解决方案:正确率&#xff1a;90 文章专栏 我的Halcon开发 CSDN 专栏 Halcon学习 练习项目gitee仓库 CSDN Major 博主Halcon文章推荐 随笔分类 - Halcon入门学习教程 前言 为了更加熟练的掌握Halcon的练习&#xff0c;我之…

基于SSM实现的叮当书城

一、系统架构 前端&#xff1a;jsp | jquery | layui 后端&#xff1a;spring | springmvc | mybatis 环境&#xff1a;jdk1.7以上 | mysql | maven 二、代码与数据库 三、功能介绍 01. 系统首页 02. 商品分类 03. 热销 04. 新品 05. 注册 06. 登录 07. 购物车 08. 后台-首页 …

Linux:centOS常用命令

CentOS是一种基于Red Hat Enterprise Linux&#xff08;RHEL&#xff09;的开源操作系统&#xff0c;因此与其他基于Linux的系统共享很多相似的命令。以下是一些在CentOS上常用的命令 件和目录操作: ls: 列出目录内容。cd: 切换目录。pwd: 显示当前工作目录。mkdir: 创建目录…

Grafana采用Nginx反向代理

一、场景介绍 在常规操作中&#xff0c;一般情况下不会放开许多端口给外部访问&#xff0c;特别是直接 ip:port 的方式开放访问。但是 Grafana 的请求方式在默认情况下是没有任何规律可寻的。 为了满足业务需求&#xff08;后续通过 Nginx 统一一个接口暴露 N 个服务&#xf…

解决Vue编程式导航路由跳转不显示目标路径问题

我们配置一个编程式导航的路由跳转&#xff0c;跳转到 /search 页面&#xff0c;并且携带categoryName和categoryId两个query参数。 this.$router.push({path: "/search",query: {categoryName: dataset.categoryname,categoryId: dataset.categoryid} }) 如果我们…