Linux 学习笔记(六):wait() 系统调用

news/2024/10/31 5:26:56/

一、wait() 介绍

       有时候我们需要让一个进程等待另一个进程(最常见的是父进程等待自己的子进程,或者父进程回收自己的子进程资源包括僵尸进程),就需要使用到系统调用函数—— wait() 。对 wait 的调用会阻塞调用进程,直到它的一个子进程退出接收到信号。而子进程终止后,父进程将继续执行 wait() 系统调用之后的指令。

       简单来说,父进程执行 wait 函数之后,会被阻塞在此处。如果子进程状态发生变化,wait 函数会立即返回结果;否则 wait 函数会一直阻塞父进程,直到子进程状态发生变化。

       wait()阻塞的方式等待子进程退出,防止僵尸进程的产生。

  • 当父进程忘了使用 wait() 函数等待已终止的子进程时,子进程就会进入一种无父进程的状态,此时子进程就是僵尸进程
  • 如果父进程有多个子进程,只要有一个子进程终止,父进程就可以结束等待状态

二、wait 函数原型

int wait(int *status)
  • 参数 status 用来保存被收集进程退出时的一些状态,是一个指向 int 类型的指针

       ① 如果我们对这个子进程是如何死掉并不在意,只想把这个僵尸进程消灭掉,就可以设定这个参数为 NULL

pid = wait(NULL);

       如果成功,wait 会返回被收集的子进程的进程ID。如果调用进程没有子进程,调用就会失败,此时 wait 返回 -1,同时 errno 被置为 ECHILD 。

       ② 如果参数 status 的值不是NULL,wait 就会把子进程退出时的状态取出并存入 status 中, 这是一个整数值(int),指出了子进程是正常退出还是被非正常结束的,以及正常结束时的返回值,或被哪一个信号结束的等信息。

三、wait 返回值

       在有多个子程序的情况下,如果只终止了一个子进程,则返回该终止的子进程ID;如果终止了多个子进程,则 wait() 将获取任意的已终止子进程并返回该子进程的ID。

返回值含义
-1调用出错,此时出错信息在 errno 中
0waitpid 的 options 设置了 WNOHANG,且调用中没有子进程退出
>0返回结束子进程的 PID

四、总结

       wait() 会暂时停止当前进程的执行,直到有信号来到或子进程结束。

       如果在调用 wait() 时子进程已经结束,则 wait() 会立即返回该子进程的结束状态值。子进程的结束状态值由参数 status 返回,子进程的进程识别码也会一起返回。如果不在意结束状态值,则参数 status 可以设成 NULL


http://www.ppmy.cn/news/67759.html

相关文章

【CocosCreator入门】CocosCreator组件 | Collider(碰撞)组件

Cocos Creator是一款流行的游戏开发引擎,具有丰富的组件和工具,其中碰撞系统组件是该引擎的重要组成部分。该组件可用于检测游戏中各个元素之间的碰撞,例如玩家角色与敌人、子弹与障碍物等。 目录 一、组件介绍 二、组件属性 2.1BoxCollid…

Java面试知识点(全)-设计模式二

Java面试知识点(全) 导航: https://nanxiang.blog.csdn.net/article/details/130640392 注:随时更新 13.模板模式 定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的…

ASEMI代理LT8471IFE#PBF原装ADI车规级LT8471IFE#PBF

编辑:ll ASEMI代理LT8471IFE#PBF原装ADI车规级LT8471IFE#PBF 型号:LT8471IFE#PBF 品牌:ADI/亚德诺 封装:TSSOP-20 批号:2023 引脚数量:20 工作温度:-40C~125C 安装类型:表面…

np读取txt、csv文件的数据

目录 1、基础参数 2、参数详解 3、应用参数示例 机器学习中使用np.loadtxt()可以高效的导入数据,np.loadtxt()适合.txt文件和.csv文件。但是它默认读取float类型的值。 1、基础参数 numpy.loadtxt(fname, dtype, comments#, delimiterNone, convertersNone, s…

NC与单一窗口数据对接丨外贸软件

在国际贸易通关过程中,所涉及相关部门的信息管理,主要是以数字化流程系统为主,让每个部门业务的申请、办理、回复采用电子化和互联网化。由于每个环节部分的数据壁垒未打通,数据无法协同共享,导致在口岸通关的过程中&a…

sort ,uniq ,tr ,cut命令

目录 一、sort命令 1.格式 2.命令演示 2.1 选项 -n :按照数字大小排序 2.2选项 -r :反向排序 2.3选项 -u:隐藏多余行 2.4选项 -t :指定分隔符;-k :指定字符;-o :指定保存文件 二、uniq命令…

详细介绍SVG.js中textPath和text元素相关的一些方法,帮助大家更好的了解和使用这两个元素

SVG.js是一个基于SVG的JavaScript库,可以帮助更加简单地操作SVG元素。其中,textPath和text元素是SVG.js中非常重要的两个元素,它们可以让我们在SVG图形中添加文字,并实现一些炫酷的效果。在本篇文章中,我们将详细介绍S…

计网U+选择题知识点

第一章U 1.Internet 网络本质上属于( 分组交换)网络。 2.(网络层发送的是分组) 3.在 OSI 参考模型中,自下而上第一个提供端到端服务的是(传输层 )。 4.APRANET 5.三类大家很熟悉的网络是(电信网络,有线电视网络,计算机…