fork十个进程:
for( int i=10; i > 0; i--){
int pid = fork();
printf("--------fork one[%d]------", pid);
} |
这段代码对不对?
运行一下,基本上都会死机,why?
这就需要考察fork了,fork到底做了什么?
fork创建子进程,好像这是废话。创建子进程之后呢,又如何呢?子进程会得到一个同父进程一样的副本,然后从fork之后的语句进行运行。
等等,也就是子进程还会执行for循环,也会创建自己的子进程了。
那总共产生了多少个子进程呢?
10+2^9+2^9*2^8+......太恐怖了,不死机才怪呢。
那么如何只是产生10个子进程呢?
for( int i=10; i > 0; i--){
int pid = fork();
printf("--------fork one[%d]------", pid);
if(pid == 0){
break;
}
} |
看来可以直接作为拒绝服务程序的典范了^_^