for (int i = 0; i < 2; i++) { fork(); printf("-\n"); }
4
5
6
8
int main(void) { int i; for(i=0; i<2; i++){ fork(); printf("-"); } wait(NULL); wait(NULL); return 0; }
fork函数总是“调用一次,返回两次”
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
fork()函数是通过系统调用实现进程的拷贝。
第一次for循环,执行完fork函数之后,系统中有两个一模一样的进程,并且都执行到printf函数处,这一次循环会打印出两个“ - ”符号
第二次进入for循环,经过fork函数,第一次循环中产生的两个进程分别再次分裂,这时会有4个进程打印 “-”符号,
所以最终结果是6个。