我正在 Ubuntu 中学习进程及其行为,但我对 wait() 有点困惑。所以我的问题是:
- while(wait(NULL)>0);语句如何 正在工作中?
- wait()中NULL的目的是什么?
我已经在终端中看到了输出,但是即使它执行了 wait() 函数,父级也在执行并生成子级。父级执行不应该停止吗?这是代码:
int main(int argc, char *argv[])
{
pid_t childid;
if(argc!=2)
{
printf("Please provide an argument in terminal! \n");
return 0;
}
int i,n=atoi(argv[1]);
for(i=0;i<n;i++)
{
childid=fork();
if(childid==0)
{
printf("Inside Child process! \n My id is %d\n",getpid());
break; // creating fan process structure
}
else
if(childid>0)
{
printf("Inside Parent Process! \n My id is %d\n",getpid());
}
}
while(wait(NULL)>0);
printf("After While Statment!\n My id is %d\n My parent ID is %d\n Child id is %d\n",getpid(),getppid(),childid);
}
我知道这是一个非常蹩脚的问题,但这是人们学习的方式:)
谢谢