博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

CUDev

Hello,all like Unix Linux and CU ! ^_^
CUDev.cublog.cn


CU上的一个有意思的东西
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;
       }
    }

看来可以直接作为拒绝服务程序的典范了^_^

发表于: 2008-06-18 ,修改于: 2008-06-18 12:20,已浏览666次,有评论1条 推荐 投诉


网友评论
内容:
HAO
本站网友评论于:2008-06-22 17:29:56 (125.71.183.★)

发表评论