当我等待作为子进程的特定运行进程组时,WIFEXITED返回true表示该进程已退出?这是它的工作方式吗?似乎有一些我不理解的东西….
if ( waitpid(-pgid,&pstatus,WUNTRACED|WNOHANG ) == -1) perror("Wait error"); if ( WIFEXITED(pstatus) ) { strncpy(buf,"Exited",buf_size); return 0;
解决方法
正如您指定的WNOHANG我认为waitpid返回0并且pstatus具有之前的值,因此WIFEXITED不使用更新的数据.
if
WNOHANG
was specified and one or more child(ren)
specified bypid
exist,but have not yet changed state,
then0
is returned.