waitpid
是 Linux/Unix 系统调用,用于等待子进程状态变化(不一定是死亡),其核心功能是:
- 阻塞或非阻塞等待子进程的以下事件:
- 终止(正常退出或被信号杀死)。
- 被信号暂停(stopped)(如
SIGSTOP
、SIGTSTP
)。 - 从暂停状态恢复(continued)(如
SIGCONT
)。
- 返回值:
- 成功时返回子进程的 PID。
- 失败时返回
-1
(如无子进程或参数错误)。
关键参数
pid_t waitpid(pid_t pid, int *status, int options);
-
pid
:>0
:等待指定的子进程。-1
:等待任意子进程(类似wait
)。
-
status
:输出参数,存储子进程状态(需用宏解析,如WIFEXITED
)。 -
options
:WNOHANG
:非阻塞模式(无状态变化时立即返回 0)。WUNTRACED
:返回已停止的子进程状态(即使未报告过)。WCONTINUED
:返回因SIGCONT
恢复的子进程状态。