【发布时间】:2015-02-25 20:05:00
【问题描述】:
当waitpid()函数以如下方式实现时,当孩子因SIGTSTP信号而停止时它返回什么?为什么?
waitpid(pid,&status,WUNTRACED);
其中 pid 是任何进程的进程 ID,status 是 int 类型。
它是否也会暂停调用进程,直到它没有找到任何停止或终止的子进程,或者它不会影响正在进行的进程?
【问题讨论】:
当waitpid()函数以如下方式实现时,当孩子因SIGTSTP信号而停止时它返回什么?为什么?
waitpid(pid,&status,WUNTRACED);
其中 pid 是任何进程的进程 ID,status 是 int 类型。
它是否也会暂停调用进程,直到它没有找到任何停止或终止的子进程,或者它不会影响正在进行的进程?
【问题讨论】:
它返回停止的子进程的进程ID。
POSIX 声明
WUNTRACEDpid 指定的任何已停止的子进程的状态,以及自停止后尚未报告其状态的子进程的状态,也应报告给请求进程。
和
如果
wait()或waitpid()因为子进程的状态可用而返回,这些函数应返回一个等于报告status的子进程的进程ID 的值。 (...)
here.
这个返回值当然是如果有多个子进程并且调用中的pid是0或者更少,这样你就不会提前知道上报的子进程的PID就更有意思了,但不管怎样,你都明白。
【讨论】: