利用fork循环创建进程
2016-06-22 19:26
183 查看
我们知道,fork可以创建子进程,那么如果循环调用fork,进程之间会有什么关系呢?
得到结果:
从结果上分析,一共有4个进程,6132,6133,6134,6135,它们的关系是怎样的呢?
按道理来讲,刚开始i=0,只有一个进程6132,fork后,产生子进程6133。6132执行完printf后,i++。在fork后,6132作为父进程,产生子进程6134.而6133作为i=0时的子进程,执行完printf后,i++,此时6133作为父进程,产生子进程6135。
结果却和所想有些出入,为什么后4个进程的父进程都是1?
我认为可能和内核进程调度算法有关,可能是因为父进程执行完,而子进程没有执行完,导致子进程成为孤儿进程,被1给回收。
之后我给父进程加上sleep(1);
这样就能够直观的显示进程之间的关系了。
得到结果:
从结果上分析,一共有4个进程,6132,6133,6134,6135,它们的关系是怎样的呢?
按道理来讲,刚开始i=0,只有一个进程6132,fork后,产生子进程6133。6132执行完printf后,i++。在fork后,6132作为父进程,产生子进程6134.而6133作为i=0时的子进程,执行完printf后,i++,此时6133作为父进程,产生子进程6135。
结果却和所想有些出入,为什么后4个进程的父进程都是1?
我认为可能和内核进程调度算法有关,可能是因为父进程执行完,而子进程没有执行完,导致子进程成为孤儿进程,被1给回收。
之后我给父进程加上sleep(1);
这样就能够直观的显示进程之间的关系了。
相关文章推荐
- pthread_atfork解读
- 文件描述符总结
- Linux进程实践(1) --Linux进程编程概述
- Linux_父子进程与fork
- 探讨父子线程、进程终止顺序不同产生的结果
- fork函数
- [Linux C编程]消息队列实现同时通信
- fork后父子进程共享资源
- 父子进程的各种区别与联系
- 简单的谈一下进程fork()
- 父子进程之间的关系
- QtQuick UI 问答
- 10071-Back to High School
- Google 搜索技巧
- synchronized调用规则
- Java字符流与字节流转换
- 6.1 JSP内置对象总结
- 如何获取原生数据
- 按照网上方法js删除指定cookie,却怎么也删除不了,解决如下
- BZOJ3992 [SDOI2015]序列统计