【发布时间】:2021-03-01 00:35:15
【问题描述】:
我想知道这个程序通过调用fork 3次产生了多少父子进程
#include <stdio.h>
#include <unistd.h>
int main(){
int i;
printf("before fork, my pid is %d\n" , getpid());
for (i=0; i<3; i++){
if ( fork()== 0 )
printf("Hi, I am child. My pid is %d\n", getpid());
}
}
上述程序的输出
fork 之前,我的 pid 是 4221
完成,我的 pid 是 4221
完成,我的 pid 是 4224
完成,我的 pid 是 4223
完成,我的 pid 是 4226
完成,我的 pid 是 4222
完成,我的 pid 是 4227
完成,我的 pid 是 4225
完成,我的 pid 是 4228
【问题讨论】:
-
您可以轻松地在纸上解决这个问题。提示:每个
fork()调用都会产生一个子进程,并且该子进程会继续按照父进程的方式循环。 -
那是欢迎儿童杀手的时候
-
与“my pid”的数量一样多
-
你对这个问题的理解是什么?