私は、関数のforkが返す値について少し混乱しています。私は値0
がchild
のプロセスであり、値>0
がparent
のプロセスであることを理解しています。 Iはフォーク後Cの変数にforkのreturnin値を保存する
int main()
{
int pid;
pid = fork();
if(pid == 0)
//DO SOMETHING
else
//DO SOMETHING ELSE
return 0;
}
valiable pid
以下のコードは、プロセスごとに異なるがありますか? 値がどのように切り替わるのか分かりません。そして、私は子供の価値を持っている理由は、PID最初printf
との行に私は理解していない可能性のあるコード
int main()
{
int pid;
if (pid == 0)
{
return 5;
}
printf("parent = %d waits for child = %d ", getpid(), pid);
waitpid(pid, NULL, 0);
printf("child terminates!")
return 0;
}
を有する第2の部分を持っています。親のid
であってはなりませんか?
2番目の質問では、 'pid'はプロセスIDではないと言います。しかし、親プロセスはwaitpid()を使用して子プロセスの待機を待っています。なぜプロセスIDではないのですか? –
@DimitrisMplスタックに割り当てられた整数変数で、初期化されていません。同じ名前でも、他の関数で使用したのと同じ 'pid'変数ではありません。それで、最後にスタックに書き込まれたものだけが含まれます。 – Ext3h