- 論壇徽章:
- 0
|
UNPv3_1 p110頁(yè)說(shuō),“wait沒(méi)有辦法防止正運(yùn)行的子進(jìn)程尚有未終止時(shí)阻塞”,這個(gè)很不好理解,誰(shuí)能解釋一下,代碼這樣子:
void sig_child(int signo)
{
pid_t pid;
int stat;
while((pid = wait(&stat))>0)
printf("child %d terminated!\n", pid);
return ;
}
我發(fā)現(xiàn)這樣子也可以做到把子進(jìn)程收回,不會(huì)讓子進(jìn)程成為僵死進(jìn)程,但是書(shū)上的解釋就有點(diǎn)難以理解了,書(shū)上的代碼是這樣子的:
void sig_child(int signo)
{
pid_t pid;
int stat;
while(pid = waitpid(-1, &stat, WNOHANG) > 0)
printf("child %d terminated!\n", pid);
return ;
}
加了一個(gè)WNOHANG選項(xiàng),但是我做不成這種實(shí)驗(yàn),也就是如果等待的子進(jìn)程都還沒(méi)有終止,那么就立即返回。 |
|