当waitpid()函数以下列方式实现时,当孩子由于SIGTSTP信号而停止时它会返回什么?为什么?
waitpid(pid,&status,WUNTRACED);
其中pid是任何进程的进程ID,状态是int类型。
它是否也会暂停通话过程,直到找不到任何停止或终止的孩子或它不会影响正在进行的过程?
答案 0 :(得分:2)
返回已停止的子进程的进程ID。
POSIX声明
WUNTRACED
pid指定的任何已停止的子进程的状态,以及自停止后尚未报告的状态,也应报告给请求进程。
和
如果由于子进程的状态可用而返回
wait()
或waitpid()
,则这些函数将返回一个值,该值等于报告了status
的子进程的进程ID 。 (...)
如果有多个子流程并且呼叫中的pid
为0
或更少,则此返回值当然会更有趣,因此您不会知道PID的值提前报告了孩子的过程,但你得到了它。