进程等待-wait和waitpid

目录

1.为什么要进程等待

2.如何进程等待?

1.wait函数

2.waitpid

1.pid

2.status

3.options/非堵塞轮询


1.为什么要进程等待

1.子进程退出,如果父进程没有退出,那么子进程就会变成僵尸状态。僵尸状态会变得刀枪不入,kiil -9命令也不可以杀死。

2.但是僵尸进程问题,可能会存在内存泄露问题。(因此需要进程等待,让父进程将其收回)

3.父进程需要知道子进程返回的情况如何。结果对不对,是否正常退出。

2.如何进程等待?

1.wait函数

:!man 3 wait查看文档

我们可以通过下面的代码,简单了解一下wait函数,wait函数里面的参数等到waitpid的时候再讲,两者没有区别的。本质是一样的。

通过下面的现象会发现:我们wait一直在等待子进程退出,而父进程没有到wait函数的时候,子进程就出于僵尸模式,然后wait函数回收,只有父进程在进行着。

但是如果父进程进行到wait函数,但是子进程没有结束会发生什么?

结果就是wait函数使父进程停滞,处在堵塞状态:

如果有多个子进程,wait函数可等待任意一个子进程。

2.waitpid

:!man waitpid 之后按g到文档开头

1.pid

1.如果实参是-1,那么就会和wait函数一样,等待任意一个子进程,如果是>0,就会等待和pid一样的进程ID的进程。

2.status

`status这个形参就是要解决为什么中的第3个。

那子进程返回有几种情况呢?子进程也是进程,其实就是进程退出的三种情况:

我们先看一下运行结果:

最后是256,而不是我们所想象的1,为什么呢?

core dump标志我们暂时不用管:   1 0000 0000  是不是就是256了?

但是系统不需要我们知道,他提供了宏函数:

3.options/非堵塞轮询

上面讲到如果子进程不退出,父进程的进程等待会一直等待,堵塞在那里,父进程什么事也做不了,所以非堵塞轮询就是解决这个问题,让父进程不仅可以等待子进程回收,也能干点自己的事情。

我们就可以写一下程序模拟一下:

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

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

相关文章

如何使用vite框架封装一个js库,并发布npm包

目录 前言介绍 一、创建一个vite项目 1、使用创建命令: 2、选择others 3、 模板选择library 4、选择开发语言 ​编辑 二、安装依赖 三、目录介绍 1、vite.config.ts打包文件 2、package.json命令配置文件 三、发布npm 1、注册npm账号 2、设置npm源 3、登…

Echarts 折线图圆点属性【圆点大小】【鼠标悬停时放大圆点】

调整 ECharts 折线图上的圆点大小 可以通过设置相应的系列属性实现。具体来说,可以通过设置 symbolSize 属性来控制圆点的大小option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [820, 932, 901, …

让代码比你来时更干净

** 代码设计原则 ** 一、 函数设计 每个函数和每个模块都全神贯注于一件事明确的定义API尽量少的方法和函数减少依赖关系,便于维护 二、 逻辑原则 代码的逻辑直截了当,让缺陷难以隐藏构建简单的抽象没有重复的代码 三、 增益设计 性能调到最优&a…

【模型评估 05】Holdout、交叉检验、自助法

机器学习中,我们通常把样本分为训练集和测试集,训练集用于训练模型,测试集用于评估模型。在样本划分和模型验证的过程中,存在着不同的抽样方法和验证方法。 1. 在模型评估过程中,有哪些主要的验证方法,它们…

Debian(Linux)局域网共享文件-NFS

NFS (Network File system) 是一种客户端-服务器文件系统协议,允许多个系统或用户访问相同的共享文件夹或文件。最新版本是 NFS-V4,共享文件就像存储在本地一样。它提供了中央管理,可以使用防火墙和 Kerberos 身份验证进行保护。 本文将指导…

经典蓝牙连接过程

目录 1. Inquiry过程 2. 连接过程 2.1 create connection(必选) 2.

系列四、Spring Security中的认证 授权(前后端不分离)

一、Spring Security中的认证 & 授权(前后端不分离) 1.1、MyWebSecurityConfigurerAdapter /*** Author : 一叶浮萍归大海* Date: 2024/1/11 21:50* Description:*/ Configuration public class MyWebSecurityConfigurerAdapter extends WebSecuri…

安卓应用无法拉起部分机型微信支付

错误提示: 2024-01-11 09:01:01.878 11754-11754 MicroMsg.S...ApiImplV10 com.bm.read E register app failed for wechat app signature check failed 2024-01-11 09:01:01.879 11754-11754 MicroMsg.S...ApiImplV10 com.bm.read E s…

建站为什么需要服务器?(Web服务器与计算机对比)

​  在部署网站时,底层基础设施在确保最佳性能、可靠性和可扩展性方面发挥着至关重要的作用。虽然大多数人都熟悉个人计算机 (PC) 作为日常工作和个人任务的设备,但 PC 和 Web 服务器之间存在显著差异。在这篇文章中,我们将讨论这些差异是什…

CentOS:docker容器日志清理

1.先查看磁盘空间 df -h 2.找到容器的containerId-json.log文件,并清理 find /var/lib/docker/containers/ -name *-json.log |xargs du -sh 3、可以根据需求清理对应日志也可以清理数据大的日志 $ cat /dev/null > /var/lib/docker/containers/dbaee0746cc6adad3768b4ef…

java基础知识点系列——数据输入(五)

java基础知识点系列——数据输入(五) 数据输入概述 Scanner使用步骤 (1)导包 import java.util.Scanner(2)创建对象 Scanner sc new Scanner(System.in)(3)接收数据 int i sc…

【数据库集群】之一主一从

目录 一、mysql集群概念二、mysql集群环境配置实验1、全新的服务器安装全新的数据库(可以在vm中克隆比较快,克隆的服务器要没有安装好数据库,实验环境:mysql80)2、配置域名解析3、一主一从服务器的配置:一、…

算法训练营Day39

#Java #动态规划 Feeling and experiences&#xff1a; 爬楼梯&#xff08;进阶版&#xff09;&#xff1a;卡码网题目链接 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬至多m (1 < m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; …

Innosetup 读写注册表,读写INI文件

一.innosetup读写注册表 1.注册表读写字符串 (RegQueryStringValue&#xff0c;RegWriteStringValue) RegQueryStringValue(HKEY_CURRENT_USER, SOFTWARE\SODA, appversion, appversion) RegWriteStringValue(HKEY_CURRENT_USER, SOFTWARE\SODA, appversion, s…

MySQL之多表连接查询、AS别名、扩展内容(information_schema的基本应用)

文章目录 前言一、引入多表连接查询二、多表连接查询案例1.准备对应的库表2.案例 三、AS别名用法示例 四、扩展内容1、information_schema的基本应用2、创建视图示例3、information_schema.tables视图的应用3.1、示例 五、show命令总结总结 前言 第三章内容主要描述了mysql使用…

InternLM第4次课笔记

XTuner 大模型单卡低成本微调实战 1 Finetune介绍 2 XTuner介绍 XTuner中微调的技术&#xff1a; 3 8GB显卡玩转LLM 4 动手实战环节 https://github.com/InternLM/tutorial/tree/main/xtuner

@RequestBody 注解内置的 HttpMessageConverter 实现类来解析请求体

在 Spring MVC 中&#xff0c;RequestBody 注解默认使用内置的 HttpMessageConverter 实现类来解析请求体&#xff0c;并尝试将其转换为方法参数所需的对象类型。如果需要指定解析的数据类型&#xff0c;可以通过在方法参数上添加更具体的注解来实现。 以下是一些常见的用于指…

第九部分 使用函数 (一)

目录 一、简介 二、函数的调用语法 一、简介 在 Makefile 中可以使用函数来处理变量&#xff0c;从而让我们的命令或是规则更为的灵活和具 有智能。make 所支持的函数也不算很多&#xff0c;不过已经足够我们的操作了。函数调用后&#xff0c;函数 的返回值可以当做变量来使用…

YOLOv8 Ultralytics:使用Ultralytics框架进行FastSAM图像分割

YOLOv8 Ultralytics&#xff1a;使用Ultralytics框架进行FastSAM图像分割 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows 使用Ultralytics框架进行FastSAM图像分割参考文献 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容…