Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5703107
  • 博文数量: 675
  • 博客积分: 20301
  • 博客等级: 上将
  • 技术积分: 7671
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 16:15
文章分类

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类: C/C++

2008-06-18 12:20:36

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;
       }
    }

看来可以直接作为拒绝服务程序的典范了^_^
阅读(1910) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-06-22 17:29:56

HAO

chinaunix网友2008-06-22 17:29:56

HAO