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);
}
私はこれが非常に不十分な質問であることを知っていますが、これは人々が学ぶ方法です:)
ありがとう