Tan*_*ett 8 process system-calls architecture linux-kernel
手册页wait(2)
指出,如果指定进程不是调用进程的子进程,waitpid
系统调用将返回ECHILD
错误。为什么是这样?等待非子进程会产生某种安全问题吗?为什么在非子进程上实现等待是困难或不可能的,是否存在技术原因?
god*_*eek 14
因为如何waitpid
运作。在 POSIX 系统上,当其子进程之一死亡时,信号 (SIGCHLD) 会传递给父进程。在高层次上,waitpid
所做的一切都是阻塞,直到为指定的进程(或进程之一)传递 SIGCHLD 信号。您不能等待任意进程,因为永远不会为它们传递 SIGCHLD 信号。