当前位置: 首页 > news >正文

孤儿进程和僵尸进程

本文讲述了什么是孤儿进程和僵尸进程,会带来怎样的问题以及如何处理

一、孤儿进程

1)什么是孤儿进程    

         孤儿进程,顾名思义,就是父进程提前终止,但是子进程还在运行中,父进程无法对子进程进行监管,子进程就成为了孤儿进程。

2)孤儿进程的危害

        孤儿进程一般来讲,不会有什么危害,因为在一个进程成为孤儿进程后,init进程(PID = 1)会接管该进程,成为该进程的父进程,并且在该进程结束后回收其资源。

        例如以下代码,子进程进入死循环,打印消息,父进程运行5s后退出,在父进程退出后,子进程变成孤儿进程,被init进程“收养”,通过对进程的监控信息可以验证这一结论。

#include <iostream>
#include <unistd.h>
#include <sys/types.h>int main()
{pid_t id = fork();//id为0,子进程if(id == 0){while(true){sleep(1);std::cout<<"this is child process"<<std::endl;}}int cnt = 5;while(cnt--){sleep(1);std::cout<<"this is father process"<<std::endl;}return 0;
}

二、僵尸进程

1)什么是僵尸进程

        僵尸进程就是,子进程运行已经结束,但是父进程没有对其资源回收,导致子进程不能彻底退出,始终停留在Zombie状态。在僵尸状态,进程表中仍然会保留僵尸进程的PCB,占用系统资源。

2)僵尸进程的危害

        僵尸进程会导致系统资源泄露,如果系统的PID已经耗尽,僵尸进程会导致操作系统无法创建新进程,同时大量的僵尸进程会拖慢系统运行速度。

int main()
{pid_t id = fork();//id为0,子进程if(id == 0){int cnt = 5;while(cnt--){sleep(1);std::cout<<"this is child process"<<std::endl;}exit(1);}while(true){sleep(1);std::cout<<"this is father process";}return 0;
}

3)僵尸进程的避免方法

3.1)主动调用wait/waitpid

        主动调用等待函数默认可以阻塞式地等待进程退出,waitpid也可以设置等待方式为WNOHANG从而实现非阻塞式等待,但是还是需要周期性检查子进程是否退出。

3.2)终止父进程

        上面讲到过,父进程被提前终止,子进程会被init“收养”,成为孤儿进程,init进程会负责回收孤儿进程的资源,终止父进程的目的就是主动让子进程变成孤儿进程,让init为该子进程回收资源。

3.3)信号处理

        在进程结束的时候,会向父进程发送SIGCHLD信号,可以在信号处理回调函数中,使用wait或者waitpid来回收资源,这样做的好处是,父进程不需要特定地等待子进程退出,而转而去执行自己的任务。还有一种方法,只在类unix系统下可用,将SIGCHLD的捕获手动设置为忽略,在收到该信号的时候,就会自动回收子进程的资源。

相关文章:

孤儿进程和僵尸进程

本文讲述了什么是孤儿进程和僵尸进程&#xff0c;会带来怎样的问题以及如何处理 一、孤儿进程 1&#xff09;什么是孤儿进程 孤儿进程&#xff0c;顾名思义&#xff0c;就是父进程提前终止&#xff0c;但是子进程还在运行中&#xff0c;父进程无法对子进程进行监管&#…...

用ASCII字符转化图片

代码 from PIL import Image# 定义 ASCII 字符集&#xff0c;从最暗到最亮 ASCII_CHARS "%#*-:. "def resize_image(image, new_width100):width, height image.sizeratio height / widthnew_height int(new_width * ratio)resized_image image.resize((new_wi…...

从WebRTC到嵌入式:EasyRTC如何借助大模型提升音视频通信体验

随着人工智能技术的快速发展&#xff0c;WebRTC与大模型的结合正在为音视频通信领域带来革命性的变革。WebRTC作为一种开源实时通信技术&#xff0c;以其低延迟、跨平台兼容性和强大的音视频处理能力&#xff0c;成为智能硬件和物联网设备的重要技术支撑。 而EasyRTC作为基于W…...

自动化测试工具-Playwright介绍和快速实例

Playwright 是什么 Playwright 是由 Microsoft 开发的开源自动化测试工具,专为现代 Web 应用设计。它支持 Chromium、Firefox 和 WebKit 内核的浏览器,能够跨平台(Windows、macOS、Linux)运行,提供强大的浏览器自动化能力,适用于测试、爬虫和监控等场景。 Playwright的…...

Java:Apache HttpClient中HttpRoute用法的介绍

当使用Apache HttpClient组件时&#xff0c;经常会用到它的连接池组件。典型的代码如下&#xff1a; PoolingHttpClientConnectionManager connectionManager new PoolingHttpClientConnectionManager();connectionManager.setMaxTotal(httpConfig.getMaxPoolTotal());connect…...

万字长文详解|蚂蚁数据湖深度探索与业务应用实践

作者介绍&#xff1a;黄超傑&#xff0c;蚂蚁数据智能部实时数据团队数据研发工程师&#xff0c;致力于数据湖技术在蚂蚁落地应用、蚂蚁广告实时数仓建设、蚂蚁数据成本治理等工作。 在开始之前 如果&#xff1a; 你想要提升数据时效&#xff0c;能够接受分钟级延迟你好奇准实…...

rk3568 以太网eth1 , 定制板 phy调试问题。

问题: 客户定制底板的 phy 网络不通。 解决逻辑: phy 问题, 就是 照着 公司底板对硬件就行,完全是硬件问题,不用改 软件。 原理图如下:...

React相关面试题

以下是150道React面试题及其详细回答&#xff0c;涵盖了React的基础知识、组件、状态管理、路由、性能优化等多个方面&#xff0c;每道题目都尽量详细且简单易懂&#xff1a; React基础概念类 1. 什么是React&#xff1f; React是一个用于构建用户界面的JavaScript库&#xff…...

IT工具 | node.js 进程管理工具 PM2 大升级!支持 Bun.js

P(rocess)M(anager)2 是一个 node.js 下的进程管理器&#xff0c;内置负载均衡&#xff0c;支持应用自动重启&#xff0c;常用于生产环境运行 node.js 应用&#xff0c;非常好用&#x1f44d; &#x1f33c;概述 2025-03-15日&#xff0c;PM2发布最新版本v6.0.5&#xff0c;这…...

php 高性能,高并发,有哪些框架,扩展,推荐一下,或者技术的实现有哪些

以下是针对PHP高性能、高并发场景的框架、扩展及技术实现推荐&#xff0c;结合最新技术趋势和行业实践进行总结&#xff1a; 一、高性能框架推荐 1. C扩展类框架 YAF (Yet Another Framework) 特点&#xff1a;由C语言编写&#xff0c;直接嵌入PHP内核&#xff0c;仅提供核心M…...

golang单机锁实现

1、锁的概念引入 首先&#xff0c;为什么需要锁&#xff1f; 在并发编程中&#xff0c;多个线程或进程可能同时访问和修改同一个共享资源&#xff08;例如变量、数据结构、文件&#xff09;等&#xff0c;若不引入合适的同步机制&#xff0c;会引发以下问题&#xff1a; 数据竞…...

面试中JVM常被问到的问题以及对应的答案

在面试中&#xff0c;关于JVM常被问到的问题以及对应的答案可能包括&#xff1a; 什么是JVM&#xff1f;它的作用是什么&#xff1f; 答&#xff1a;JVM是Java虚拟机的缩写&#xff0c;是Java程序运行的环境。它负责将Java源代码编译成字节码并运行在不同平台上。 请解释一下J…...

算法——广度优先搜索——跨步迷宫

原题链接 思路&#xff1a;找出最短路径&#xff0c;然后判断是否存在连续三个点是横纵坐标相等的&#xff0c;如果有就步数减1 但是有两个样例过不了 错误原因&#xff1a;在错误的测试案例中&#xff0c;最短路径可能有多条&#xff0c;而我刚好选了一条比较曲折的&#x…...

Python pyqt+flask做一个简单实用的自动排班系统

这是一个基于Flask和PyQt的排班系统&#xff0c;可以将Web界面嵌入到桌面应用程序中。 系统界面&#xff1a; 功能特点&#xff1a; - 读取员工信息和现有排班表 - 自动生成排班表 - 美观的Web界面 - 独立的桌面应用程序 整体架构&#xff1a; 系统采用前后端分离的架构…...

链表操作:分区与回文判断

目录 链表分区&#xff08;Partition&#xff09; 功能概述 代码实现 要点与难点 注意事项 链表回文判断&#xff08;PalindromeList&#xff09; 功能概述 代码实现 要点与难点 注意事项 总结 在链表相关的算法问题中&#xff0c;理解链表的基本结构和操作至关重要…...

基于大模型的腮腺多形性腺瘤全周期诊疗方案研究报告

目录 一、引言 1.1 研究背景与目的 1.2 研究现状与趋势 二、大模型预测原理与方法 2.1 大模型概述 2.2 数据收集与预处理 2.3 模型训练与优化 三、术前预测与评估 3.1 肿瘤特征预测 3.2 风险评估 3.3 案例分析 四、术中方案制定与实施 4.1 手术方案选择 4.2 面神…...

Vue3 界面设计插件 microi-pageengine 入门教程一

系列文章目录 一、Vue3空项目快速集成 microi-pageengine 插件 文章目录 系列文章目录一、前言二、排版布局2.1 功能导航区2.2 组件容器区2.3 属性面板区 三、数据来源配置3.1 json数据源3.2 html数据源 四、事件穿透五、数据保存持久化六、总结 一、前言 上一篇文章介绍了 v…...

如何选择合适的SSL服务器证书

在数字化时代&#xff0c;网络安全已成为企业不可忽视的重要环节。SSL&#xff08;Secure Sockets Layer&#xff0c;安全套接层&#xff09;服务器证书作为保障网站数据传输安全的关键工具&#xff0c;其选择和使用至关重要。 一、SSL证书类型&#xff1a;基础与进阶 SSL证书…...

STC89C52单片机学习——第26节: [11-2]蜂鸣器播放音乐

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.03.19 51单片机学习——第26节: [11-2]蜂鸣器播放音乐 前言开发板说明引用解答和科普一…...

ABC396题解

A 算法标签: 模拟 问题陈述 给你一个长度为 N N N 的整数序列&#xff1a; A ( A 1 , A 2 , … , A N ) A (A_1, A_2, \ldots, A_N) A(A1​,A2​,…,AN​)。 请判断在 A A A 中是否有相同元素连续出现三次或三次以上的位置。 更正式地说&#xff0c;请判断是否存在一个整…...

如何用Python和Selenium实现表单的自动填充与提交?

在今天的数字化时代&#xff0c;自动化工具可以极大地提高工作效率。很多人可能会觉得填表单是个繁琐的任务&#xff0c;不过你知道吗&#xff1f;用Python和Selenium可以轻松解决这一问题&#xff01;本文将带你走进如何利用这两个强大的工具&#xff0c;实现表单的自动填充和…...

使用`plot_heatmap`绘制热力图时

在Python中&#xff0c;使用plot_heatmap绘制热力图时&#xff0c;颜色图例&#xff08;colorbar&#xff09;的定制化设置是关键步骤。以下是实现方法及优化建议&#xff1a; 一、基础图例绘制 自动生成颜色条 使用seaborn.heatmap()时&#xff0c;默认会生成颜色条&#xff0…...

极简桌面待办清单软件,❌不会增加工作量

工作邮件、会议安排、生活琐事……事情多到根本记不住&#xff0c;又怕错过重要事项&#xff0c;焦虑感油然而生。相信这是很多职场朋友遇到的问题&#xff0c;也急需一款好用的极简桌面待办清单软件来辅助我们。 今天我要给大家推荐一款拯救我们于水火的神器——好用便签&…...

QT学习笔记4

一、音视频播放&#xff08;Qt Multimedia&#xff09; 1. 多媒体框架架构 核心类关系 &#xff1a; mermaid #mermaid-svg-mwHLYcpaJDU14uFM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-mwHLYcpaJDU14uFM .e…...

软考 中级软件设计师 考点知识点笔记总结 day06

文章目录 6、树和二叉树6.1、树的基本概念6.2、二叉树的基本概念6.3、二叉树的遍历6.4、查找二叉树&#xff08;二叉排序树&#xff09;BST6.5、构造霍夫曼树6.6、线索二叉树6.7、 平衡二叉树 7、 图7.1 、 存储结构 - 邻接矩阵7.2 、 存储结构 - 邻接表7.3、图的遍历7.4、拓扑…...

爬虫基础之爬取猫眼Top100 可视化

网站: TOP100榜 - 猫眼电影 - 一网打尽好电影 本次案例所需用到的模块 requests (发送HTTP请求) pandas(数据处理和分析 保存数据) parsel(解析HTML数据) pyecharts(数据可视化图表) pymysql(连接和操作MySQL数据库) lxml(数据解析模块) 确定爬取的内容: 电影名称 电影主演…...

微信小程序面试内容整理-如何使用wx.request()进行网络请求

wx.request() 是微信小程序中用于发送网络请求的 API,类似于浏览器中的 fetch 或 XMLHttpRequest。通过 wx.request(),开发者可以向服务器发送 HTTP 请求,获取数据或者提交数据。 基本用法 wx.request() 通过提供一个配置对象来进行配置,配置对象中包括请求的 URL、请求方法…...

力扣100二刷——图论、回溯

第二次刷题不在idea写代码&#xff0c;而是直接在leetcode网站上写&#xff0c;“逼”自己掌握常用的函数。 标志掌握程度解释办法⭐Fully 完全掌握看到题目就有思路&#xff0c;编程也很流利⭐⭐Basically 基本掌握需要稍作思考&#xff0c;或者看到提示方法后能解答⭐⭐⭐Sl…...

该错误是由于`KuhnMunkres`类未定义`history`属性导致的

该错误是由于KuhnMunkres类未定义history属性导致的。以下是具体分析及解决方案&#xff1a; 错误原因分析 属性缺失 代码中试图访问km.history&#xff0c;但KuhnMunkres类未在初始化或算法执行过程中定义该属性&#xff0c;因此触发AttributeError。动画实现逻辑不完整 用户…...

DAPO:一个开源的大规模大型语言模型LLM强化学习系统

推断扩展赋予了大型语言模型前所未有的推理能力,强化学习作为激发复杂推理的核心技术,清华大学联合字节提出了解耦片段与动态采样策略优化(DAPO)算法,并全面开源了一个最先进的大规模强化学习系统,该系统使用Qwen2.5-32B基础模型在AIME 2024上取得了50分的高分。还开源了…...

数据结构中的引用管理对象体系

数据结构中的引用管理对象体系 &#xff08;注&#xff1a;似复刻变量即实例对象&#xff09; 引用管理对象的&#xff0c;有引用就能管理到它所指向的对象&#xff0c;我们拿引用最终的目的就是管理那些我们需要管理的最终直接对象&#xff0c;引用也是对象&#xff0c;同时…...

【自学笔记】智能合约基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 智能合约基础知识点总览目录1. 智能合约简介2. 以太坊与Solidity示例代码&#xff1a;Hello World智能合约 3. Solidity基础语法示例代码&#xff1a;简单的计数器合…...

Linux的Shell编程

一、什么是Shell 1、为什么要学习Shell Linux运维工程师在进行服务器集群管理时&#xff0c;需要编写Shell程序来进行服务器管理。 对于JavaEE和Python程序员来说&#xff0c;工作的需要。Boss会要求你编写一些Shell脚本进行程序或者是服务器的维护&#xff0c;比如编写一个…...

【八股文】volatile关键字的底层原理是什么

volatile只能保证可见性和有序性 volatile如何保证可见性 当对volatile变量进行写操作的时候&#xff0c;JVM会向处理器发送一条lock前缀的命令&#xff0c;将这个缓存中的变量会写到系统内存中。 所以&#xff0c;如果一个变量被volatile所修饰&#xff0c;每次数据变化之后…...

一种基于大规模语言模型LLM的数据分析洞察生成方法

从复杂数据库中提取洞察对数据驱动决策至关重要,但传统手动生成洞察的方式耗时耗力,现有自动化数据分析方法生成的洞察不如人工生成的有洞察力,且存在适用场景受限等问题。下文将介绍一种新的方法,通过生成高层次问题和子问题,并使用SQL查询和LLM总结生成多表数据库中的见…...

三大供应链管理模式——解决方案与实操案例详解

库存压到喘不过气&#xff0c;紧急订单却总赶不上交付&#xff1f;这是许多企业的真实困境——推式供应链盲目备货导致积压&#xff0c;拉式供应链又因响应慢而丢单。供应链管理&#xff0c;本质上是在“计划”与“变化”之间把握平衡。上篇文章&#xff0c;我们系统梳理了供应…...

【C++】STL库面试常问点

STL库 什么是STL库 C标准模板库&#xff08;Standard Template Libiary&#xff09;基于泛型编程&#xff08;模板&#xff09;&#xff0c;实现常见的数据结构和算法&#xff0c;提升代码的复用性和效率。 STL库有哪些组件 STL库由以下组件构成&#xff1a; ● 容器&#xf…...

集成学习之随机森林

目录 一、集成学习的含义 二、集成学习的代表 三、集成学习的应用 1、分类问题集成。&#xff08;基学习器是分类模型&#xff09; 2、回归问题集成。&#xff08;基学习器是回归模型&#xff09; 3、特征选取集成。 四、Bagging之随机森林 1、随机森林是有多个决策树&a…...

【SpringBatch】03步骤对象 (Step)控制与执行流程设计

目录标题 六、步骤对象 Step6.1 步骤介绍6.2 简单Tasklet6.3 chunk居于块Tasklet**ChunkTasklet 泛型** 6.4 步骤监听器6.5 多步骤执行6.6 步骤控制6.6.1 条件分支控制-使用默认返回状态6.6.2 条件分支控制-使用自定义状态值 6.7 步骤状态6.8 流式步骤 六、步骤对象 Step 前面…...

走进Java:String字符串的基本使用

❀❀❀ 大佬求个关注吧~祝您开心每一天 ❀❀❀ 目录 一、什么是String 二、如何定义一个String 1. 用双引号定义 2. 通过构造函数定义 三、String中的一些常用方法 1 字符串比较 1.1 字符串使用 1.2 字符串使用equals() 1.3 使用 equalsIgnoreCase() 1.4 cpmpareTo…...

AI如何变革亚马逊广告投放?DeepBI的智能优化解析

在亚马逊平台上&#xff0c;广告投放的方式正经历着从人工精细化运营到AI自动化优化的深刻变革。传统的广告投放依赖人工操作&#xff0c;涉及海量数据分析、手动调价、竞价策略优化等环节&#xff0c;既耗时又易受人为因素影响。而AI驱动的智能投放系统&#xff0c;如DeepBI&a…...

小程序电子画册制作,用户体验为王!

家人们&#xff0c;现在小程序电子画册超火&#xff0c;不管是展示产品还是分享故事都超实用。但在小程序电子画册制作过程中&#xff0c;用户体验真的得好好考量&#xff01;今天就和大家唠唠这其中的门道。 1、加载速度&#xff1a;快才是王道 打开小程序的瞬间&#xff0c…...

【商城实战(49)】解锁小程序端适配与优化,让商城飞起来

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…...

英伟达GTC 2025大会产品全景剖析与未来路线深度洞察分析

【完整版】3月19日&#xff0c;黄仁勋Nvidia GTC 2025 主题演讲&#xff5c;英伟达 英伟达GTC 2025大会产品全景剖析与未来路线深度洞察分析 一、引言 1.1 分析内容 本研究主要采用了文献研究法、数据分析以及专家观点引用相结合的方法。在文献研究方面&#xff0c;广泛收集了…...

《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用

《TCP/IP网络编程》学习笔记 | Chapter 19&#xff1a;Windows 平台下线程的使用 《TCP/IP网络编程》学习笔记 | Chapter 19&#xff1a;Windows 平台下线程的使用内核对象内核对象的定义内核对象归操作系统所有 基于 Windows 的线程创建进程与线程的关系Windows 中线程的创建方…...

线性规划的基本解、基本可行解和可行解

在线性规划中&#xff0c;基本解、基本可行解和可行解是非常重要的概念&#xff0c;特别是在使用单纯形法求解时。下面详细解释这些概念&#xff0c;并说明如何计算它们。 1. 线性规划问题的标准形式 线性规划的标准形式为&#xff1a; 其中&#xff1a; A 是 mn 的矩阵&…...

【AVRCP】服务发现互操作性:CT 与 TG 的 SDP 协议契约解析

目录 一、服务发现的核心目标&#xff1a;能力画像对齐 二、控制器&#xff08;CT&#xff09;服务记录&#xff1a;控制能力的声明 2.1 必选字段&#xff1a;角色与协议的刚性契约 2.1.1 服务类标识&#xff08;Service Class ID List&#xff09; 2.1.2 协议描述列表&am…...

[从零开始学习JAVA] Stream流

前言&#xff1a; 本文我们将学习Stream流&#xff0c;他就像流水线一样&#xff0c;可以对我们要处理的对象进行逐步处理&#xff0c;最终达到我们想要的效果&#xff0c;是JAVA中的一大好帮手&#xff0c;值得我们了解和掌握。&#xff08;通常和lambda 匿名内部类 方法引用相…...

K8S学习之基础三十八:Kube-static-metrics监控

Kube-static-metrics监控 ​ kube-static-metrics组件可以通过监听apiserver生成有关资源对象的状态指标&#xff0c;比如Node、Pod&#xff0c;需要注意的是kube-state-metrics只是简单的提供一个metrics数据&#xff0c;并不会存储这些指标数据&#xff0c;所以可以使用Prom…...

JAVA-多线程join()等待一个线程

引言&#xff1a;更多线程的认识可以看一篇博客&#xff1a; JAVA-Thread类实现多线程-CSDN博客 一、join()的作用 我们知道线程是随机调度执行的&#xff0c;但是有时候我们需要另一个任务完成了&#xff0c;我们才能继续&#xff0c;这个时候我们就可以使用join去等待线程结束…...