关于fork()的一道经典面试题

来源:互联网 发布:孟德尔 知乎 编辑:程序博客网 时间:2024/04/29 15:57

不算main这个进程自身,到底创建了多少个进程啊?

1
2
3
4
5
6
intmain(intargc, char* argv[])
{
   fork();
   fork() && fork() || fork();
   fork();
}


  • A.18

  • B.19

  • C.20

  • D.21


fork()是一个分叉函数, 返回值: 若成功调用一次则返回两个值,子进程返回0,父进程  返回子进程标记;否则,出错返回-1

    每次fork()就翻倍;

fork();
   fork() && fork() || fork();
   fork();
第一条和第三条分别X2;关键在第二条语句。第二条有 5个分支;
A&&B||C

   A为假,跳过B,判断C-----------------------2

   A为真,判断B,若B为真,跳过C-----------1

                          若B为假,判断C  ------------2

故总数为2*(2+1+2)*2=20;减去自己就是19.

0 0
原创粉丝点击