Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
脚步:
在不同的程序组中分叉并启动进程 使用 SIGTSTP 停止进程 使用 SIGCONT 重新启动进程 进程结束
问题:SIGCHLD 处理程序具有:
waitpid(-1, &status, WNOHANG | WUNTRACED);
在返回 pid=0 和 WIFEXITED=1 时,进程退出,但我无法获取 pid?我需要pid。 从手册页中:“如果指定了 WNOHANG 并且 pid 指定的一个或多个子项存在,但尚未更改状态,则返回 0”但似乎状态已更改为退出。
如果返回的 pid 为 0,则状态是没有意义的。考虑一下。返回 0 表示您有一个或多个孩子尚未更改状态。尚未改变状态的孩子的状态会是什么?如果有多个孩子,状态码引用哪个孩子?
这类似于在成功调用时检查 errno。先前调用中的任何内容都可以在 errno 中,但它与最近的成功调用无关,因为 errno 通常不会设置为成功。
的返回值waitpid是被等待的孩子的 PID。
waitpid