fork求进程数相关问题总结

题1. 求子进程数,不包含主进程

#include <unistd.h> int main() { fork(); fork() && fork() || fork(); fork(); return 0; } 

 

 

栈式方法

1, 2, 3, 5

2, 3, 5

4, 5

4, 5

4, 5

4, 5

5

5

5

5

共19个子进程

 

 

题2. 求输出行数

#include <unistd.h> #include <sys/types.h> #include <stdio.h> int main() { int i; for (i = 0; i < 5; i++){ fork(); printf("%d/n", getpid()); fflush(stdout); } return 0; } 

按循环次数分析。

i=0,2个子进程,输出2行

i=1,4个子进程,输出4行

。。。

i=4,2^5个子进程,输出2^5行

总的输出行数:2+2^2+...+2^5 = 2(2^5 - 1) = 62行

你可能感兴趣的:(fork求进程数相关问题总结)