C程序

时间:2016-04-07 11:52:51

标签: c

我正在尝试打印wait()函数的当前值。我从输出中想到的是,当子进程正在运行时,子上下文中wait()的当前值为-1,一旦完成并返回,则在父上下文中,wait()的值等于它的子进程&# 39; s pid。根据我的理解,这种含义是否正确?

#include<stdio.h>
#include<stdlib.h>

int main ()

{
 int statloc;
int stat;
 printf("\nthis process id is %d", getpid());

 int pid;
pid =fork();
stat=wait(&statloc);

printf("\n Value of stat is %d",stat);
getchar();
}

输出

       this process id is 10740
 Value of stat is -1k                 // k is entered as input due to getchar
        this process id is 10740
 Value of stat is 10741j               // j is entered as input due to getchar

1 个答案:

答案 0 :(得分:1)

我认为你的理解是错误的。

等待的使用是等待任何一个子进程退出。 如果子进程退出,它将返回已退出子进程的进程ID,并将进程的退出状态存储在wait函数的传递参数中。

我们可以使用WEXITSTATUS()宏获取退出状态。

在那个宏中,我们必须传递传递给wait系统调用的参数。如果我们通过它,它将返回该过程的实际退出状态。

要了解有关等待的更多信息,请阅读以下链接。

http://man7.org/linux/man-pages/man2/wait.2.html