我正在尝试打印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
答案 0 :(得分:1)
我认为你的理解是错误的。
等待的使用是等待任何一个子进程退出。 如果子进程退出,它将返回已退出子进程的进程ID,并将进程的退出状态存储在wait函数的传递参数中。
我们可以使用WEXITSTATUS()宏获取退出状态。
在那个宏中,我们必须传递传递给wait系统调用的参数。如果我们通过它,它将返回该过程的实际退出状态。
要了解有关等待的更多信息,请阅读以下链接。