下面这个程序,让你计算一下产生多少个子进程。
int main()
{
fork();
fork()&&fork()||fork();
fork();
}
解答:
fork的基本性质大家都知道,返回0是子进程,返回1是父进程。这个题目容易让人晕菜,所以要掌握方法。
下面用图示的方法看看它的执行过程。
2(第一个fork后) ----- +2(执行第二个fork之后) -(返回值为0)-- +2 (短路&&,执行第四个fork)
|
(返回值为1)
|
+2(执行第三个fork) -(返回值为0)-- +2(执行第四个fork)
到最后一个fork执行之前,已经有了2+2+2+2+2=10个进程,最后再fork一次,一共是20个。
除去最开始的进程,一共产生了20-1=19个进程。
{
fork();
fork()&&fork()||fork();
fork();
}
解答:
fork的基本性质大家都知道,返回0是子进程,返回1是父进程。这个题目容易让人晕菜,所以要掌握方法。
下面用图示的方法看看它的执行过程。
2(第一个fork后) ----- +2(执行第二个fork之后) -(返回值为0)-- +2 (短路&&,执行第四个fork)
|
(返回值为1)
|
+2(执行第三个fork) -(返回值为0)-- +2(执行第四个fork)
到最后一个fork执行之前,已经有了2+2+2+2+2=10个进程,最后再fork一次,一共是20个。
除去最开始的进程,一共产生了20-1=19个进程。