fork函数分析
来源:互联网 发布:零基础linux教程 编辑:程序博客网 时间:2024/05/16 09:43
前面我们已经说过,一个进程包括代码、数据和分配给进程的资源,进程运行时还有自身的状态。Linux下fork()函数可以用来创建进程,且创建的“子进程是父进程的一个完整拷贝”,子进程拷贝了父进程的数据,也拷贝了父进程的代码和运行状态,因此子进程是从自身被创建的代码处开始执行的。
下面我们举个例子,看看代码中创建了多少个子进程。
从上图的代码和运行结果中我们可以看出,程序一共打印输出了8次,因此一共创建了7个子进程。为什么呢?可以看下图:
main函数运行过程中会创建3个进程,假设为子进程1,子进程2和子进程3;子进程1被创建后,执行其后面的代码,又会创建2个进程,假定为子进程4和子进程5;子进程2被创建后,会执行其后面的代码,又会创建一个进程,假定为子进程6;子进程4被创建后,会执行其后面的代码,又会创建一个进程,假定为子进程7;每个进程都会执行printf和wait函数,因此加上main进程,一共有8个进程。
那么下面图中的代码共创建了多少个进程呢?这里大家需要注意的是“&&”操作,该操作的左边操作数如果为0,那么后面的语句就不执行了!因此如果父进程在执行“fork()&&fork()”语句中的第一个fork时,会生成一个子进程,但是由于该子进程给自身的返回值是0,因此该子进程在执行时,不会执行“fork()&&fork()”语句中后面的fork。具体的流程请看下面手画的图。
0 0
- fork函数分析
- fork函数分析举例
- fork函数分析
- fork()函数的精辟分析
- fork()函数的精辟分析
- 关于fork()函数的分析
- fork()函数的精辟分析
- Linux中的fork()函数分析
- Linux中fork函数分析
- Linux中fork函数分析
- 关于fork()函数的精辟分析
- 关于fork()函数的精辟分析
- 关于fork()函数的精辟分析
- 关于fork()函数的精辟分析
- 关于fork()函数的精辟分析
- 关于fork()函数的精辟分析
- JOS fork函数 实现机制分析
- fork()函数的do_fork()源码分析
- 理解STP(spanning-tree)生成树协议中各种端口的选举
- 决策树的初体验
- 关于QT的系统总结(非常全面,非常好)
- XSS跨站脚本攻击过程最简单演示
- 数组 之 你值得了解的底层
- fork函数分析
- 开发日常161014
- C语言练习题-字符串中找连续最长字符串
- 区块链制作流程
- yii2学习笔记——基础使用操作
- HDU1846:Brave Game(巴什博弈)
- 视频封装格式——MP4
- strcmp的原型与用法
- 区块链怎么开发