我在 c 中有这个小程序,我试图了解它是如何工作的,它是一个简单的 while 循环,它使用fork()
并wait()
在命令行上打印出几行,我已经尽我所能评论了我的想法正在发生
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
当其中一个子进程返回时i
,父进程是否等待它&j
?这真的让我很困惑,任何帮助将不胜感激。