代码之家  ›  专栏  ›  技术社区  ›  Kyle Brandt

为什么WIFEXITED在运行进程时返回True?

  •  7
  • Kyle Brandt  · 技术社区  · 15 年前

    当我等待作为子进程的特定正在运行的进程组时,WIFEXITED返回true,表示进程已退出?是这样吗?似乎有什么我不明白的。。。。

    if ( waitpid(-pgid, &pstatus, WUNTRACED|WNOHANG ) == -1)
        perror("Wait error");
    
    if ( WIFEXITED(pstatus) ) {
        strncpy(buf,  "Exited", buf_size);
        return 0;
    
    2 回复  |  直到 15 年前
        1
  •  6
  •   Joachim Sauer    15 年前

    如你所说 WNOHANG 我想 waitpid 0 pstatus 有以前的价值吗 WIFEXITED 无法处理更新的数据。

    如果 WNOHANG 已指定,并且有一个或多个子项(ren) 指定的 pid 0 他回来了。

        2
  •  1
  •   R.. GitHub STOP HELPING ICE    14 年前

    waitpid WNOHANG ,如果没有子项退出,则立即返回0。因此,在检查之前,需要检查返回值是0还是pid status

    http://pubs.opengroup.org/onlinepubs/9699919799/functions/waitpid.html