手册页wait(2)
指出,如果指定的进程不是调用进程的子进程,则waitpid
系统调用将返回ECHILD
错误。为什么是这样?等待非子进程会造成某种安全问题吗?是否有技术上的原因导致很难或不可能实现在非子进程上进行等待?
由于waitpid
工作原理。在POSIX系统上,当子进程之一死亡时,信号(SIGCHLD)被传递到父进程。在较高级别上,所有工作waitpid
都在阻塞,直到为指定的过程(或其中一个过程)传递了SIGCHLD信号为止。您不能等待任意进程,因为SIGCHLD信号永远不会为它们传递。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句