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

waitpid

1 是什么?

waitpid 是 Linux/Unix 系统中用于进程管理的核心函数。 它的主要作用是让父进程暂停执行,直到一个指定的子进程状态发生变化, 然后获取该子进程的状态信息并进行“收尸”(回收资源)。

2 函数原型

#include<sys/types.h>#include<sys/wait.h>pid_twaitpid(pid_tpid,int*status,intoptions);
参数1 pid_t pid 指定等待的子进程: • > 0:待进程ID 等于 pid 的特定子进程 • = 0:等待与调用者同进程组的任意子进程 • = -1:等待任意子进程(等价于 wait()) • < -1:等待进程组 ID 为 abs(pid) 的任意子进程
参数2 int *status 一个输出参数,用于保存子进程的退出状态信息(如退出码、终止信号等)。 若不关心退出状态,可设为 NULL。
参数3 int options 控制函数行为,可通过 | 运算符组合使用: 控制等待行为: • 0:阻塞等待,直到子进程状态变化 • WNOHANG:非阻塞。若无子进程状态变化,立即返回 0 • WUNTRACED:也报告被 SIGSTOP 暂停的子进程 • WCONTINUED:也报告被 SIGCONT 恢复的子进程
返回值 成功:返回状态发生变化的子进程 PID 0:仅在设置了 WNOHANG 选项,且没有子进程退出时返回。 失败:返回 -1,并设置 errno

3 作用

同步父子进程: 使父进程在关键时刻等待子进程完成,确保程序执行顺序。 防止僵尸进程: 子进程结束后,内核会保留其 PCB 直到父进程调用 waitpid 读取状态。 不调用会导致僵尸进程堆积。 精确控制: 与 wait 不同,waitpid 可以等待特定子进程, 或通过 WNOHANG 实现非阻塞轮询, 适用于父进程需同时处理其他任务的场景。

4 与 wait() 的区别

wait 函数 #1 等待对象 任意子进程 #2 仅支持阻塞等待
http://www.jsqmd.com/news/658721/

相关文章:

  • 前辈学习C语言的四种方法,实际上不管学什么语言,都行之有效
  • Python自动化操作Creo的5个实用技巧(附代码示例)
  • StructBERT中文情感分类:SpringBoot微服务集成指南
  • 大数据开发场景中,Python 常用且易错易混淆的知识点总结(附:从实战角度梳理的 Python 知识体系)
  • React Fiber 渲染机制详解
  • Agent 开发框架(三)LangGraph
  • 【优化调度】基于matlab遗传算法GA大规模人工智能模型训练任务调度【含Matlab源码 15344期】
  • 别再只用WSL1了!Win10 2004版保姆级升级WSL2教程(含性能对比与文件系统避坑指南)
  • 基于NDT算法的双VLP-16激光雷达外参标定实战:从单机启动到多机协同
  • 5G NR物理层设计精要:为什么子载波间隔能灵活可变?它对时延和覆盖有何影响?
  • PlantDoc数据集升级:从开源标注到精准农业对象检测的实践
  • Python 中主要数据类型分类及特性总结(附:可哈希 (Hashable) 与 不可哈希 (Unhashable) 详解)
  • SQL处理大规模分组聚合的内存限制_调整服务器配置
  • DPABI/DPARSF新手避坑指南:从DICOM到NIFTI,我的预处理血泪史
  • 《算法竞赛中的初等数论》精讲:从零到精通的十五万字实战指南
  • OpenClaw 低代码部署教程 小白也能快速上手
  • 基于LightGBM与多因子指标的股票涨跌预测实战
  • 游戏引擎‘潜规则’:为什么你的法线贴图在Unity里凸,到UE4里就凹了?
  • 【UE5】Groom毛发系统进阶指南——从3DsMax到UE的毛发材质与物理模拟全流程
  • 2026年质量好的PETG包装管/PS包装管横向对比厂家推荐 - 品牌宣传支持者
  • SerialPlot终极指南:5个技巧掌握实时串口数据可视化
  • Go语言怎么做链路追踪_Go语言分布式链路追踪教程【精选】.txt
  • 互联网大厂 Java 求职面试:从音视频场景到微服务技术的探讨
  • PY烧录器从入门到量产:手把手教你批量烧录PY32F002B(附UID加密实战)
  • PCIe硬件电路设计实战:从理论到PCB布局的关键要点
  • LeetCode 3761. 镜像对之间最小绝对距离 (多算法优化版)
  • 塑料件用润滑脂有什么讲究
  • Terraform 从入门到精通:一篇彻底搞懂基础设施即代码(IaC)——用代码定义云,实现跨云、安全、可审计的自动化基础设施管理
  • 光刻原理--从惠更斯-菲涅尔到傅里叶光学
  • STM32F103ZET6实战:FreeRTOSv202406.01-LTS移植避坑指南