创建子进程与进程的状态

本文介绍了在Linux环境下如何创建子进程,详细阐述了fork()函数的工作原理。同时,文章还探讨了进程的六种状态,包括运行(R)、睡眠(S)、深度睡眠(D)、暂停(T)、僵尸(Z)和死亡(X)状态,以及孤儿进程的处理机制,确保系统资源的合理利用和避免内存泄漏问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建子进程与进程状态

创建子进程

一. 创建子进程的概念:
在之前我们了解过,操作系统要对进程进行管理就要先描述再组织,那么操作系统管理的原因是因为内存中存在大量的进程,那么这些进程是怎么来的呢,一部分进程是通过磁盘中的可执行程序运行后,将代码和数据加载到内存中并创建对应的PCB实现创建进程,还有一些可以通过接口来创建进程,这里通过接口创建的进程就是我们今天要将的子进程,它和前面的进程不同的是它的代码部分不是来自硬件而是来自于它的父进程,而创建一个子进程也需要创建一个它对应的PCB来将其管理起来,这就是创建子进程。

二. 创建子进程的方法:
通过fork()函数来创建子进程:
fork()函数它与普通函数不同的是,他会有两个返回值,一个返回0用来表示子进程,一个返回创建的子进程pid用来表示父进程,所以我们就可以通过fork()函数来创建子进程让两个进程共同实现代码。如下图:
在这里插入图片描述
此时在我们没有调用fork()函数的时候,当前就一个进程来运行printf函数输出I am running!这个语句,当通过fork()创建了子进程之后,下面就分开进行讨论,当返回值等于0就是子进程运行的部分代码,当返回值大于0的时候就是父进程运行的代码。

三. 关于创建子进程的几个问题

  1. 子进程执行的数据和代码都从哪里来?
    数据和代码都来源于父进程的一部分,子进程的代码来源不是通过加载实现的,而是来源于父进程。

  2. 当创建子进程时,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值