WIFEXITED为什么会在运行过程中返回True?

Kyl*_*ndt 7 c system-calls

当我等待作为子进程的特定运行进程组时,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)

Ark*_*nez 6

正如您所指定的那样,WNOHANG我认为它waitpid正在返回0pstatus具有之前的值,因此WIFEXITED不能使用更新的数据.

如果WNOHANG已指定且存在一个或多个子(ren)pid,但尚未更改状态,则0返回.