waitpid

张开发
2026/5/18 18:18:56 15 分钟阅读
waitpid
1 是什么waitpid 是 Linux/Unix 系统中用于进程管理的核心函数。 它的主要作用是让父进程暂停执行直到一个指定的子进程状态发生变化 然后获取该子进程的状态信息并进行“收尸”回收资源。2 函数原型#includesys/types.h#includesys/wait.hpid_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并设置 errno3 作用同步父子进程 使父进程在关键时刻等待子进程完成确保程序执行顺序。 防止僵尸进程 子进程结束后内核会保留其 PCB 直到父进程调用 waitpid 读取状态。 不调用会导致僵尸进程堆积。 精确控制 与 wait 不同waitpid 可以等待特定子进程 或通过 WNOHANG 实现非阻塞轮询 适用于父进程需同时处理其他任务的场景。4 与 wait() 的区别wait 函数 #1 等待对象 任意子进程 #2 仅支持阻塞等待

更多文章