Linux(9)——进程(控制篇——下)

article/2025/8/11 1:23:15

三、进程等待

1)进程等待的必要性

  1. 之前提过子进程退出,父进程如果不读取子进程的退出信息,就可能造成“僵尸进程”的问题,从而造成内存泄漏的问题。
  2. 再者,一旦子进程进入了僵尸状态,那就连kill -9都杀不亖他,因为没有谁能够杀亖一个死去的进程。
  3. 最后,父进程创建子进程是要获取子进程的完成任务的情况的。
  4. 父进程需要通过等待的方式来回收子进程的资源,获取子进程的退出信息。

2)获取子进程的status

下面进程等待使用的两个方法wait方法和waitpid方法都有一个status参数,这是一个输出型参数(输出型参数是函数中用于返回结果或修改调用者变量的参数,通常通过引用或指针实现。如void func(int *output)。),由操作系统进行填写。

如果向status中传递的是NULL,那就表示用户不关心子进程的退出状态。否则,操作系统会根据该参数,将子进程的退出信息反馈给父进程。

status不能简单的当作整形来看待,可以当作位图来看待,具体细节如下图(只研究status低16比特位):

我们从图中可见,status的低16比特位中,高8位表示进程的退出状态,即退出码。当进程被信息杀亖时,则低7位表示终止信息,第8位时core dump标志。

wait方法

函数类型:pid_t wait(int* status);

返回值:成功返回被等待进程pid,失败返回-1。

参数:输出型参数,获取子进程退出状态,不关心则可以设置成为NULL 

作用:等待任意子进程 

创建子进程后,父进程使用wait方法等待子进程,直到子进程的退出信息被读取,我们可以写个代码验证一下:


http://www.hkcw.cn/article/OloJHSLuOw.shtml

相关文章

Scratch节日 | 六一儿童节

六一儿童节到啦!快来体验这款超简单又超好玩的 六一儿童节 小游戏吧!只需要一只鼠标,就能尽情释放你的创意,绘出属于你自己的缤纷世界! 🎮 玩法介绍 鼠标滑动:在屏幕上随意滑动鼠标&#xff0c…

高原户外制氧机的优势特点有哪些

一、便携设计,突破环境限制 高原户外制氧机以轻量化、紧凑化设计为核心,重量普遍控制在3kg以内,可轻松装入背包或车载空间。采用折叠式吸氧管与一体化电源设计,支持太阳能充电板或车载供电,满足徒步、骑行、自驾等多元…

harmonyos实战关于静态图片存放以及image图片引入

编写demo轮播图的时候,用到图片,想到静态资源具体存放在哪里?? 官网工程目录结构解释:文档中心 Resource资源 使用资源格式可以跨包/跨模块引入图片,resources文件夹下的图片都可以通过$r资源接口读取到并…

LINUX530 rsync定时同步 环境配置

rsync定时代码同步 环境配置 关闭防火墙 selinux systemctl stop firewalld systemctl disable firewalld setenforce 0 vim /etc/selinux/config SELINUXdisable设置主机名 hostnamectl set-hostname code hostnamectl set-hostname backup设置静态地址 cd /etc/sysconfi…

超低延迟与高稳定性的行业领先直播解决方案

随着实时音视频技术的不断发展,直播行业的需求逐渐从单一的流媒体传输向更高效、更稳定、更加智能化的方向转变。作为一家创新型技术公司,上海视沃信息科技有限公司凭借其自研的大牛直播SDK,为各行业提供了一款极致体验的、低延迟、高稳定的音…

华为云Flexus+DeepSeek征文 | 基于Dify和DeepSeek-R1开发企业级AI Agent全流程指南

作者简介 我是摘星,一名专注于云计算和AI技术的开发者。本次通过华为云MaaS平台体验DeepSeek系列模型,将实际使用经验分享给大家,希望能帮助开发者快速掌握华为云AI服务的核心能力。 目录 1. 前言 2. 环境准备 2.1 华为云资源准备 2.1 实…

quasar electron mode如何打包无边框桌面应用程序

预览 开源项目Tokei Kun 一款简洁的周年纪念app,现已发布APK(安卓)和 EXE(Windows) 项目仓库地址:Github Repo 应用下载链接:Github Releases Preparation for Electron quasar dev -m elect…

Linux 中应用层自定义协议与序列化 -- 自定义协议概述,序列化和反序列化,Jsoncpp

目录 1. 应用层自定义协议概述 2. 序列化和反序列化 3. 重新理解 read, write, recv, send 以及 TCP 为什么支持全双工 4.Jsoncpp 4.1 Jsoncpp 的特性 4.2 使用 Jsoncpp 的序列化和反序列化 4.3 Json::Value 的介绍 4.3.1 构造函数 4.3.2 访问元素 4.3.3 类型检查 …

历年南京理工大学计算机保研上机真题

2025南京理工大学计算机保研上机真题 2024南京理工大学计算机保研上机真题 2023南京理工大学计算机保研上机真题 在线测评链接:https://pgcode.cn/school 求阶乘 题目描述 给出一个数 n n n ( 1 ≤ n ≤ 13 ) (1 \leq n \leq 13) (1≤n≤13),求出它…

[JVM] JVM内存调优

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

当 Python 遇上 Go:Sponge 如何成为替代 Django/Flask 的理想选择

开篇:Python 老司机的自白 各位 Python 老铁们!咱们写 Python 那叫一个"纵享丝滑"——动态类型玩到飞起,列表推导式秀得飞起,Django/Flask 一把梭,PyPI 库多到能砸死人!是不是觉得自己就是代码界…

Flask与PostgreSQL交互教程

目录 1. 项目结构2. 环境准备2.1 安装依赖2.2 使用Docker启动PostgreSQL 3. 数据库配置3.1 环境变量配置3.2 数据库连接配置 4. 定义数据库模型5. 实现API接口5.1 创建用户5.2 获取所有用户5.3 获取单个用户5.4 更新用户5.5 删除用户 6. 运行应用7. API测试7.1 创建用户7.2 获取…

QT中sqlite多线程操作注意事项总结:安全性与效率的双重提升

QT中sqlite多线程操作注意事项总结:安全性与效率的双重提升 【下载地址】QT中sqlite多线程操作注意事项总结 本项目深入探讨了在Qt框架下进行SQLite多线程操作时可能遇到的四大关键问题,包括线程安全、数据库连接管理、信号与槽机制以及性能优化。通过详…

深入JVM:类加载器和双亲委派模型

目录 1. 什么是类加载器2. 类加载器的类型3. 双亲委派模型4. 类装载的过程加载验证准备解析初始化使用卸载 1. 什么是类加载器 如果想要了解什么是类加载器就需要清楚一个Java文件是如何运行的。我们可以看下图: 首先要知道操作系统是不能直接运行Java文件的&#…

【JVM —— 03 类的生命周期】

Java 类的生命周期指的是一个类从加载到内存到卸载出内存的整个过程。这一过程主要包括以下几个阶段: 加载(Loading)连接(Linking) 验证(Verification)准备(Preparation)…

Arthas简介及示例

一、什么是Arthas? Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方…

JVM考古现场(十七):鸿蒙初辟——从太极二进到混沌原初的编译天道

"此刻正是奇点编译的第3.1415926秒!伏羲的算筹正在撕裂冯诺依曼架构的次元壁!诸君请看——这JVM堆内存中正在孕育盘古的元神!" 目录(终极扩展) 第一章:太极二进——内存模型的阴阳交缠 第二章&a…

JVM的组成

JVM 运行在操作系统之上 java二进制字节码文件的运行环境 JVM的组成部分 java代码在编写完成后编译成字节码文件通过类加载器 来到运行数据区,主要作用是加载字节码到内存 包含 方法区/元空间 堆 程序计数器,虚拟机栈,本地方法栈等等 随后来到执行引擎,主要作用是翻译字…

【java面试题】二进制(详解,一看就会)

二进制 1.什么是二进制 二进制是一种数值表示系统,它使用两个符号表示数字:0和1。它是计算机系统的基础,因为计算机使用二进制数来进行数据存储和处理。在二进制中,每一位代表一个2的幂次方,比如: 0 020…

Java 2.4 - JVM

一、Java 内存区域详解(重点) 本篇讨论的是 HotSpot 虚拟机 相比于 C 而言,程序员不需要对每个 new 操作都写对应的 delete / free 操作,这些操作我们会交给虚拟机去做。因此,如果不了解虚拟机的原理,一旦…