创建子进程与进程状态
创建子进程
一. 创建子进程的概念:
在之前我们了解过,操作系统要对进程进行管理就要先描述再组织,那么操作系统管理的原因是因为内存中存在大量的进程,那么这些进程是怎么来的呢,一部分进程是通过磁盘中的可执行程序运行后,将代码和数据加载到内存中并创建对应的PCB实现创建进程,还有一些可以通过接口来创建进程,这里通过接口创建的进程就是我们今天要将的子进程,它和前面的进程不同的是它的代码部分不是来自硬件而是来自于它的父进程,而创建一个子进程也需要创建一个它对应的PCB来将其管理起来,这就是创建子进程。
二. 创建子进程的方法:
通过fork()函数来创建子进程:
fork()函数它与普通函数不同的是,他会有两个返回值,一个返回0用来表示子进程,一个返回创建的子进程pid用来表示父进程,所以我们就可以通过fork()函数来创建子进程让两个进程共同实现代码。如下图:
此时在我们没有调用fork()函数的时候,当前就一个进程来运行printf函数输出I am running!这个语句,当通过fork()创建了子进程之后,下面就分开进行讨论,当返回值等于0就是子进程运行的部分代码,当返回值大于0的时候就是父进程运行的代码。
三. 关于创建子进程的几个问题