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

标签 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;

最佳答案

正如您指定的 WNOHANG 我认为 waitpid 正在返回 0 并且 pstatus 具有它之前的值所以WIFEXITED 无法使用更新后的数据。

if WNOHANG was specified and one or more child(ren) specified by pid exist, but have not yet changed state, then 0 is returned.

关于c - 为什么 WIFEXITED 会在运行过程中返回 True?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1643210/

相关文章:

c - 在打包结构的末尾对齐

c++ - 如何在没有 Openssl 或其他库的情况下加载 RSA key 对

在c中顺时针打印4X4矩阵

concurrency - 根据 POSIX,我的写入何时对其他进程可见?

从程序内部使用 'system()' 调用命令

Linux x86 系统调用 355 在启动时重复运行并导致崩溃,除非返回 -ENOSYS

c - 如何获取execlp的退出代码

c - C 中的指针错误?

c - 实现我自己的 ps 命令

分离的 pthread 会死掉吗?