waitpid 是 Linux/Unix 系统调用,用于​​等待子进程状态变化​​(不一定是死亡),其核心功能是:

  • ​阻塞或非阻塞等待​​子进程的以下事件:
    • ​终止​​(正常退出或被信号杀死)。
    • ​被信号暂停(stopped)​​(如 SIGSTOPSIGTSTP)。
    • ​从暂停状态恢复(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 恢复的子进程状态。