当我等待作为子进程的特定运行进程组时,WIFEXITED返回true表示该进程已退出?这是它的工作方式吗?似乎有些东西我不理解......
if ( waitpid(-pgid, &pstatus, WUNTRACED|WNOHANG ) == -1)
perror("Wait error");
if ( WIFEXITED(pstatus) ) {
strncpy(buf, "Exited", buf_size);
return 0;
Run Code Online (Sandbox Code Playgroud)
正如您所指定的那样,WNOHANG我认为它waitpid正在返回0并pstatus具有之前的值,因此WIFEXITED不能使用更新的数据.
如果
WNOHANG已指定且存在一个或多个子(ren)pid,但尚未更改状态,则0返回.