私はCでこの小さなプログラムを持っていて、それがどのように機能するかを理解しようとしています。これは、コマンドラインで数行を使用fork()
しwait()
て出力する単純なwhileループです。私が思うことをできる限りコメントしましたハプニング
for (i = 1; i <= 3; i++) /*simple while loop, loops 3 times */
{
pid = fork(); /*returns 0 if a child process is created */
if(pid == 0){ /*pid should be a 0 for first loop */
printf("Hello!\n"); /*we print hello */
return (i); /*will this return i to the parent process that called fork? */
} else { /*fork hasn't returned 0? */
pid = wait(&j); /*we wait until j is available? */
printf("Received %d\n", WEXITSTATUS(j)); /*if available we print "received (j)" */
}
}
このプログラムは、次のように出力することになっています。
Hello!
Received 1
Hello!
Received 2
Hello!
Received 3
子プロセスの1つが戻るi
と、親プロセスはそれを待ち&j
ますか? これは本当に私を混乱させます。どんな助けでも大歓迎です。