进程控制ppt课件
合集下载
精品课件-Linux操作系统原理与应用(张玲)-第4章

第4章 进 程 管 理
2. 进程的特性 进程与程序的不同主要体现在进程有一些程序所没有的特 性。要真正理解进程,首先应了解它的基本性质。进程具有以 下几个基本特性: (1) 动态性:进程由“创建”而产生,由“撤销”而消 亡,因“调度”而运行,因“等待”而停顿。进程从创建到消 失的全过程称为进程的生命周期。 (2) 并发性:在同一时间段内有多个进程在系统中活动。 它们宏观上是在并发运行,而微观上是在交替运行。
第4章 进 程 管 理
(3) 独立性:进程是可以独立运行的基本单位,是操作 系统分配资源和调度管理的基本对象。因此,每个进程都独立 地拥有各种必要的资源,独立地占有CPU并独立地运行。
(4) 异步性:每个进程都独立地执行,各自按照不可预 知的速度向前推进。进程之间的协调运行由操作系统负责。
第4章 进 程 管 理
第4章 进 程 管 理
4) 现场信息 现场信息一般包括CPU的内部寄存器和系统堆栈等,它们 的值刻画了进程的运行状态。退出CPU的进程必须保存好这些 现场状态,以便在下次被调度时继续运行。当一个进程被重新 调度运行时,要用PCB中的现场信息来恢复CPU的运行现场。 现场一旦切换,下一个指令周期CPU将精确地接着上次运行的 断点处继续执行下去。
第4章 进 程 管 理
4.1.1 程序的顺序执行与并发执行 1. 程序的顺序执行 如果程序的各操作步骤之间是依序执行的,程序与程序之
间是串行执行的,这种执行程序的方式就称为顺序执行。顺序 执行是单道程序系统中的程序的运行方式。
程序的顺序执行具有如下特点: (1) 顺序性:CPU严格按照程序规定的顺序执行,仅当一 个操作结束后,下一个操作才能开始执行。多个程序要运行时, 仅当一个程序全部执行结束后另一个程序才能开始。
第4章 进程控制

通信信息
进程间进行通信时所记录的有关信息
家族联系
指明本进程与家族的联系 占有资源清单
进程的特征
结构特征:进程除了程序段、数据段还 包括PCB 动态性:进程是一个程序的执行,是动 态的,是有生命周期的。 并发性:多个进程实体能同存于内存中, 且在一段时间内同时运行。 独立性:独立运行,独立申请资源,独 立接受调度。 异步性:进程按各自独立的、不可预知 的速度向前前进。 动态性和并发性是进程的最基本特征。
进程等待原语的实现
入口
保护进程的CPU现场到PCB结构中
置该进程为”等待”状态
将该进程PCB结构插入到等待队列中
转进程调度
5. 进程唤醒 进程唤醒原语的形式 当处于等待状态的进程所期待的事件来到时, 由发现者进程使用唤醒原语叫唤醒它。 wakeup(chan) 入口参数chan:进程等待的原因。 进程唤醒原语的功能 当进程等待的事件发生时,唤醒等待该事件的 进程。
响了程序速度。
程序的并发执行使得程序失去了顺序 性,封闭性和可再现性,用“程序” 无法描述这些特征,因此引入了“进 程这个概念”。
4.2 进程的概念 4.2.1进程的定义
1. 进程定义
什么是进程 所谓进程,就是一个程序在给定活动空间和初始环 境下, 在一个处理机上的执行过程。
进程与程序的区别
程序是静态的概念;进程是动态的概念
进程是一个独立运行的活动单位
进程是竞争系统资源的基本单位
一个程序可以对应多个进程;一个进程至少包含一
个程序。
2. 进程的状态
进程的基本状态
运行状态(running)
该进程已获得运行所必需的资源,它的程序正在处理机 上执行。
等待状态(wait)
进 程 控 制

(3)算法特点
多级反馈轮转算法主要有以下几个方面的特点: 1) 较快的响应速度和短作业优先。 2) 输入/输出进程优先。 3)运算型进程有较长的时间片。 4)采用了动态优先级,使那些较多占用珍贵资源CPU的进程优
先级不断降低;采用了可变时间片,以适应不同进程对时间 的要求,使运算型进程能获得较长的时间片。 总之,多级反馈轮转算法不仅体现了进程之间的公平性、进程 的优先程度,又兼顾了用户对响应时间的要求,还考虑到了 系统资源的均衡和高效率使用,提高了系统的吞吐能力。
(1)该进程已完成所要求的功能而正常终止; (2)由于某种错误导致该进程非正常终止; (3)祖先进程要求撤消某个子进程。
无论哪一种情况导致进程被撤消,进程必须释放它占 用的各种资源和PCB本身,以利于资源回收利用。
进程撤消由两部分构成,如下图所示。
子进程入口
释放资源
清除PCB除进 程ID外的内 容 通知父进程
(1)多级反馈队列
多级反馈轮转算法的核心是就绪进程的组 织采用了多级反馈队列。
多级反馈队列是将就绪进程按不同的时 间片长度(即进程的不同类型)和不同 的优先级排成多个队列,如图 (a)所示。 而且一个进程在其生存期内,将随着运 行情况而不断地改变其优先级和能分配 到的时间片长度,即调整该进程所处的 队列。
(1)机器指令级原语。这类原语的特点 是执行期间不允许中断,在操作系统中它
是个不可分割的基本单位。例如
“X=X+1”,其实是由以下汇编语句组成:
LOAD ADDI STORE
A,X A,1 A,X
(2)功能级原语。其特点是作为原语的 程序段不允许并发执行。
返回
进程控制原语就是操作系统中用于创建、撤 消进程以及完成进程各状态间转换的特殊程 序。
操作系统概述PPT课件

包括一互斥的方式访问 临界资源和对合作进程之间 进行的协调。
3、进程通信
我们把进程间所进行的信 息交换成为进程通信。
4、进程调度
进程调度是指按照一定的 调度算法,例如:先来先服 务的算法,从进程的就绪队 列中选出一个进程,把处理 机分配给它,为该进程设置 运行现场,并运行之。
*存储器管理
存储器管理的主要任务 有: 1、为多道程序的并发执行提
操作系统提供的界面的 友好性和易用性成为操作系 统中的重要部分,用户在相 当的程度上以这两个标准来 判断一个系统的优劣。
*处理机管理
处理机管理主要包括进程 控制、进程同步、进程通信 和进程调度。
1、进程控制
进程控制的基本功能是创 建和撤消进程以及控制进程 的状态转换。
2、进程同步
进程同步是指系统对并 发执行的进程进行协调
计算机软件组织
计算机软件包括系统软件和应用软件
系统软件:操作系统,语言处理系统, 和常用的例行服务程序。
应用软件:指那些为了某一类的应用需 要而设计的程序,或用户为 解决某的特定的问题而编制 的程序或程序系统,如航空 定票系统。
计算机系统层次关系
应用软件 银行系统 航空定票系统
系统 编译器 编辑器
编程、穿孔、预约
装入与启动汇编程序
汇编程序运行完产生目标程序带
卸下汇编、源程序、目标程序带 安装连接带
成功否 下机修改源程序
产生、卸下连接、目标、可执行汇编目标程序带
卸下汇编、源程序、目标程序带
成功否
安装启动该用户程序
安装用户可执行目标程序和数据带
运行完毕、产生结果数据 卸下程序、数据、结果带
成功否
第一章 操作系统概述
内容提要:
3、进程通信
我们把进程间所进行的信 息交换成为进程通信。
4、进程调度
进程调度是指按照一定的 调度算法,例如:先来先服 务的算法,从进程的就绪队 列中选出一个进程,把处理 机分配给它,为该进程设置 运行现场,并运行之。
*存储器管理
存储器管理的主要任务 有: 1、为多道程序的并发执行提
操作系统提供的界面的 友好性和易用性成为操作系 统中的重要部分,用户在相 当的程度上以这两个标准来 判断一个系统的优劣。
*处理机管理
处理机管理主要包括进程 控制、进程同步、进程通信 和进程调度。
1、进程控制
进程控制的基本功能是创 建和撤消进程以及控制进程 的状态转换。
2、进程同步
进程同步是指系统对并 发执行的进程进行协调
计算机软件组织
计算机软件包括系统软件和应用软件
系统软件:操作系统,语言处理系统, 和常用的例行服务程序。
应用软件:指那些为了某一类的应用需 要而设计的程序,或用户为 解决某的特定的问题而编制 的程序或程序系统,如航空 定票系统。
计算机系统层次关系
应用软件 银行系统 航空定票系统
系统 编译器 编辑器
编程、穿孔、预约
装入与启动汇编程序
汇编程序运行完产生目标程序带
卸下汇编、源程序、目标程序带 安装连接带
成功否 下机修改源程序
产生、卸下连接、目标、可执行汇编目标程序带
卸下汇编、源程序、目标程序带
成功否
安装启动该用户程序
安装用户可执行目标程序和数据带
运行完毕、产生结果数据 卸下程序、数据、结果带
成功否
第一章 操作系统概述
内容提要:
进程控制

的I/O操作已经完成),则由另外的与阻塞进程相关的进程(如完成 I/O操作的进程)调用唤醒原语,将等待该事件的进程唤醒。阻塞 进 程不能唤醒自己。
进程唤醒步骤:原语wakeup()
从相应的等待队列中移出进程; 修改进程PCB的有关信息,如进程状态改为就绪态,并移入就绪队列
6
进程控制
进程的挂起与激活
8
ห้องสมุดไป่ตู้
进程终止过程如下:
根据撤销进程标识号,从相应队列中找到并移出它; 将该进程拥有的资源归还给父进程或操作系统; 若该进程拥有子进程,先撤销它的所有子进程,以防它们脱离控制; 回收PCB。
4
进程控制
进程的阻塞和唤醒 1、进程的阻塞
引起进程阻塞的事件: 请求系统服务 启动某种操作 新数据尚未到达 无新工作可作
挂起原语的功能:原语suspend()
自身挂起、挂起具有指定标识符的进程、将其进程及 其全部或部分“子孙”挂起。 激活原语功能:原语active() 使处于静止状态的进程变为活动。
7
进程控制
思考与练习: (2000,华中科技大学)现代操作系统一般都提供多进程(或称多任务 ) 运行环境,试回答以下问题: 1 为支持多道程序的并发执行,系统必须建立哪些关于进程的数据 结构? 2 为支持进程状态的变迁,系统至少应提供哪些进程控制原语? 3 执行每一个进程控制原语,进程状态发生什么变化?
进程控制
进程控制
进程控制的主要任务是对进程生命周期进程控制,即要负责进程的创建、 撤消以及实现进程的状态转换和进程通信等功能。这是系统的基本功能 , 由内核中相应的原语完成。 原语(primitive or atomic action): 是OS内核中由若干多机器指令构 成的完成某种特定功能的一段程序,其执行具有不可分割性,即原子特 征。亦即原语的执行必须是连续的,不能是并发或被中断的。单机系统 中的实现方式之一:屏蔽中断。 原语的特点:原子性、中断屏蔽性
进程唤醒步骤:原语wakeup()
从相应的等待队列中移出进程; 修改进程PCB的有关信息,如进程状态改为就绪态,并移入就绪队列
6
进程控制
进程的挂起与激活
8
ห้องสมุดไป่ตู้
进程终止过程如下:
根据撤销进程标识号,从相应队列中找到并移出它; 将该进程拥有的资源归还给父进程或操作系统; 若该进程拥有子进程,先撤销它的所有子进程,以防它们脱离控制; 回收PCB。
4
进程控制
进程的阻塞和唤醒 1、进程的阻塞
引起进程阻塞的事件: 请求系统服务 启动某种操作 新数据尚未到达 无新工作可作
挂起原语的功能:原语suspend()
自身挂起、挂起具有指定标识符的进程、将其进程及 其全部或部分“子孙”挂起。 激活原语功能:原语active() 使处于静止状态的进程变为活动。
7
进程控制
思考与练习: (2000,华中科技大学)现代操作系统一般都提供多进程(或称多任务 ) 运行环境,试回答以下问题: 1 为支持多道程序的并发执行,系统必须建立哪些关于进程的数据 结构? 2 为支持进程状态的变迁,系统至少应提供哪些进程控制原语? 3 执行每一个进程控制原语,进程状态发生什么变化?
进程控制
进程控制
进程控制的主要任务是对进程生命周期进程控制,即要负责进程的创建、 撤消以及实现进程的状态转换和进程通信等功能。这是系统的基本功能 , 由内核中相应的原语完成。 原语(primitive or atomic action): 是OS内核中由若干多机器指令构 成的完成某种特定功能的一段程序,其执行具有不可分割性,即原子特 征。亦即原语的执行必须是连续的,不能是并发或被中断的。单机系统 中的实现方式之一:屏蔽中断。 原语的特点:原子性、中断屏蔽性
《进程管理》PPT课件

别和进程调度。启动一个进程有两个主要途径:手工启动和调度启 动。 1. 手工启动 由用户输入命令,直接启动一个进程便是手工启动进程。 手工启动进程又可以分为前台启动和后台启动。 • 前台启动——手工启动一个进程的最常用的方式。 • 后台启动——很少用。 2. 调度启动 这种启动方式是事先进行设置,根据用户要求让系统自行启动。
-p
指定kill命令只显示进程的PlD,并不真正送出结束信号
-e
显示信号名称列表
整理ppt
12
三、 控制系统中的进程
Linux进程优先级(PR),使用0~34的整数代表;整数值越低,标 示该进程优先级越高
nice命令 nice命令用于指定进程运行的优先级。其命令格式为:
# nice –n command
➢ 进程控制指的是控制正在运行的进程的行为。在Linux中也称为作 业控制。
➢ Shell将记录所有启动的进程情况,在每个进程执行过程中,用户 可以任意地挂起进程或重新启动进程。
➢ 作业控制是许多Shell的一个特性,使用户能在多个独立进程间进 行切换。
整理ppt
6
一、 进程的概念
进程的类型和启动方式
-c
当程序被交换到交换空间时,用于显示命令栏
-l
长格式显示
-w
宽行输出,不截取命令行
整理ppt
9
输出项 PID PPID TTY STAT TIME COMMDAN/CMD USER %CPU %MEM SIZE
二、 查看系统中的进程
ps命令输出的重要信息的含义
说明 进程号 父进程的进程号 进程启动的终端 进程当前状态,S代表休眠状态,R代表运行状态 进程自从启动以来占用CPU的总时间 进程的命令名 用户名 占用CPU时间与总时间的百分比 占用内存与系统内存总量的百分比 进程代码大小+数据大小+栈空间大小(单位:KB)
-p
指定kill命令只显示进程的PlD,并不真正送出结束信号
-e
显示信号名称列表
整理ppt
12
三、 控制系统中的进程
Linux进程优先级(PR),使用0~34的整数代表;整数值越低,标 示该进程优先级越高
nice命令 nice命令用于指定进程运行的优先级。其命令格式为:
# nice –n command
➢ 进程控制指的是控制正在运行的进程的行为。在Linux中也称为作 业控制。
➢ Shell将记录所有启动的进程情况,在每个进程执行过程中,用户 可以任意地挂起进程或重新启动进程。
➢ 作业控制是许多Shell的一个特性,使用户能在多个独立进程间进 行切换。
整理ppt
6
一、 进程的概念
进程的类型和启动方式
-c
当程序被交换到交换空间时,用于显示命令栏
-l
长格式显示
-w
宽行输出,不截取命令行
整理ppt
9
输出项 PID PPID TTY STAT TIME COMMDAN/CMD USER %CPU %MEM SIZE
二、 查看系统中的进程
ps命令输出的重要信息的含义
说明 进程号 父进程的进程号 进程启动的终端 进程当前状态,S代表休眠状态,R代表运行状态 进程自从启动以来占用CPU的总时间 进程的命令名 用户名 占用CPU时间与总时间的百分比 占用内存与系统内存总量的百分比 进程代码大小+数据大小+栈空间大小(单位:KB)
高中信息技术 第3章进程管理课件

返回本节目录
3.6.2 进程调度算法
• • • • 1.先来先服务 2.轮转调度 3.分级轮转法 4.优先数法
下一页
• 1.先来先服务
• 这种调度算法按照进程进入就绪队列的先 后顺序来调度进程,到达得越早,其优先 数越高。获得处理机的进程,未遇到其他 情况时,一直运行下去,系统只需具备一 个先进先出的队列,在管理优先数的就绪 队列时,这种方法是一种最常见策略,并 且在没有其他信息时,也是一种最合理的 下一页 策略。
返回本节目录 4.系统开销:由于在创建或撤消进程时,系统都 要为之分配或回收资源,如内存空间、I/O设备等。
•
•
3.5.3 用户级线程和内核支持线 程
• 比较两种线程的优缺点 : • 1.线程的调度与切换速度:内核支持线程的调度和 切换与进程的调度和切换十分相似。 • 2.系统功能调用:当传统的用户进程调用一个系统 功能调用时,要由用户态进入核心态,用户进程将被 阻塞。当内核完成系统调用而返回时,才将该进程唤 醒,继续执行。 • 3.线程执行时间 :对于只设置了用户级线程的系统 ,调度是以进程为单位进行的。在采用轮转调度算法 时,各个进程轮流执行一个时间片,这对诸进程而言 似乎是公平的。
进程的概念 进程的实体、状态及状态的演变
进程的控制与调度
进程之间的关系协调
进程的通信
死锁问题及解决
返回本章首页
3.1 引言
• 处理机管理是操作系统的基本管理功能之一, 它所关心的是处理机的分配问题。也就是说把 CPU(中央处理机)的使用权分给某个程序, 通常把这个正准备进入内存的程序称为作业, 当这个作业进入内存后我们把它称为进程。处 理机管理分为作业管理和进程管理两个阶段去 实现处理机的分配,常常又把直接实行处理机 时间分配的进程调度工作作为处理机管理的主 要内容。
Windows进程和进程间通信 操作系统课件

Windows进程和进程间通信
kernel process (KPROCESS) block
process environment block(PEB)
Win32子系统的进程控制系统调用
n Win32子系统的进程控制系统调用主要有:
CreateProcess、ExitProcess、TerminateProcess l CreateProcess用于进程创建 l ExitProcess和TerminateProcess用于进程退出
);
结束process
n 如果某个process想停止执行, 可调用ExitProcess(), 不 过我们通常不直接调用它, 而是调用C程序库中的exit(), exit()在自动执行一些清除垃圾的工作之后, 再调用 ExitProcess()。
VOID ExitProcess(UNT uExitCode);
n GetExitCodeProcess Returns the exit code for a process, indicating how and why the process shut down
n GetCommandLine Returns a pointer to the command-line string passed to the current process
n GetEnvironmentVariable Returns a specific environment variable
n Get/SetProcessShutdownParameters Defines the shutdown priority and number of retries for the current process
kernel process (KPROCESS) block
process environment block(PEB)
Win32子系统的进程控制系统调用
n Win32子系统的进程控制系统调用主要有:
CreateProcess、ExitProcess、TerminateProcess l CreateProcess用于进程创建 l ExitProcess和TerminateProcess用于进程退出
);
结束process
n 如果某个process想停止执行, 可调用ExitProcess(), 不 过我们通常不直接调用它, 而是调用C程序库中的exit(), exit()在自动执行一些清除垃圾的工作之后, 再调用 ExitProcess()。
VOID ExitProcess(UNT uExitCode);
n GetExitCodeProcess Returns the exit code for a process, indicating how and why the process shut down
n GetCommandLine Returns a pointer to the command-line string passed to the current process
n GetEnvironmentVariable Returns a specific environment variable
n Get/SetProcessShutdownParameters Defines the shutdown priority and number of retries for the current process
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
child is:%d\n",getpid(),count,child);
15.
}
16. }
.
执行程序
exec用被执行的程序替换调用它的程序。 区别: fork创建一个新的进程,产生一个新的PID。 exec启动一个新程序,替换原有的进程,
因此进程的PID不会改变,和调用exec函 数的进程一样。
.
退出
exit和_exit用于中止进程: ➢ _exit的作用:直接使进程停止运行,清除其 使用的内存空间,并清除其在内核中的数据结 构。 ➢ exit与_exit函数不同,使进程停止运行之前要 检查文件打开情况,并把文件缓冲区的内容写 回文件中去之后才停止进程。
.
执行程序
#include<unistd.h> main() {
execl(“/bin/ls”,”ls”,”al”,”/etc/passwd”,(char*)0); }
.
执行程序
#include<unistd.h> int execlp(const char*file,const char*arg,……) 功能: 从PATH环境变量所指的目录中查找符合参数 file的文件名,找到后便执行该文件,然后将 第二个以后的参数当做该文件的argv[0]、 argv[1]……,最后一个参数必须用空指针 (NULL)作结束。
.
进程创建
#include<sys/types.h> #inlcude<unistd.h> main() { pid_t pid; /*此时仅有一个进程*/ pid=fork(); /*此时已经有两个进程在同时运行*/ if(pid<0) printf("error in fork!"); else if(pid==0) printf("I am the child process,ID is%d\n",getpid()); else printf("I am the parent process,ID is%d\n",getpid()); }
?执行后的结果?
.
进程创建
$./fork_test I am the parent process,my process ID is 1991 I am the child process,my process ID is 1992
在pid=fork()之前,只有一个进程在执行,但在这条语 句执行之后,就变成两个进程在执行了,这两个进程的 代码部分完全相同,将要执行的下一条语句都是 f(pid==0)。两个进程中,原先就存在的那个进程被称作 “父进程”,新出现的那个进程被称作“子进程”,父 子进程的区别在于进程标识符(PID)不同。
.
获取ID
#include<sys/types.h> #include<unistd.h> ➢ pid_t getpid(void) 获取本进程ID。 ➢ pid_t getppid(void) 获取父进程ID。
.
获取ID
#include<stdio.h> #include<unistd.h> #include<stdlib.h> int main(void) { printf("PID=%d\n",getpid()); printf("PPID=%d\n",getppid()); return 0; }
.
进程调度
概念: 按一定算法,从一组待运行的进程中选出 一个来占有CPU运行。
调度方式: ➢ 抢占式 ➢ 非抢占式
.
调度算法
➢ 先来先服务调度算法 ➢ 短进程优先调度算法 ➢ 高优先级优先调度算法 ➢ 时间片轮转法
.
死锁
多个进程因竞争资源而形成一种僵局, 若无外力作用,这些进程都将永远不能再 向前推进。
功能: 调用fork()产生子进程,由子进程来调用 /bin/sh-c string来执行参数string字符串 所代表的命令。
.
执行程序
#include<stdlib.h> main() {
system(“ls-al/etc/passwd /etc/shadow”);
}
.
等待
#include<sys/types.h> #include<sys/wait.h> pid_t wait(int*status) 功能: 进程一旦调用了wait,就立即阻塞自己,直到自 己的某个子进程退出,如果没有找到这样一个子 进程,wait就会一直阻塞在这里,直到有一个出 现为止。
.
临界资源
操作系统中将一次只允许一个进程访问 的资源称为临界资源。
.
临界区
进程中访问临界资源的那段程序代码称 为临界区。为实现对临界资源的互斥访 问,应保证诸进程互斥地进入各自的临 界区。
.
进程同步
一组并发进程按一定的顺序执行的过程 称为进程间的同步。具有同步关系的一组 并发进程称为合作进程,合作进程间互相 发送的信号称为消息或事件。
进程控制
进程控制理论基础 进程控制编程
.
定义
进程是一个具有一定独立功能的程序的 一次运行活动。
.
特点
➢ 动态性 ➢ 并发性 ➢ 独立性 ➢ 异步性
.
状态
.
进程ID
进程ID(PID):标识进程的唯一数字 父进程的ID(PPID) 启动进程的用户ID(UID)
.
进程互斥
进程互斥是指当有若干进程都要使用某 一共享资源时,任何时刻最多允许一个 进程使用,其他要使用该资源的进程必 须等待,直到占用该资源者释放了该资 源为止。
}
exit(0);
}
.
等待
#include<sys/types.h> #include<sys/wait.h> pid_t waitpid(pid_t pid,int*status,int options) 功能: 进程一旦调用了wait,就立即阻塞自己,直到自 己的某个子进程退出,如果没有找到这样一个子 进程,wait就会一直阻塞在这里,直到有一个出 现为止。
.
等待
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdlib.h>
main()
{
pid_t pc,pr;
pc=fork();
if(pc<0)/*如果出错*/
printf("error ocurred!\n");
.
执行程序
#include<unistd.h> main() {
char*argv[]={“ls”,”al”,”/etc/passwd”,(char*)0}; execv(“/bin/ls”,argv); }
.
执行程序
#include<stdlib.h> int system(const char*string)
.
进程创建
#include<unistd.h> pid_t fork(void) 功能:
创建子进程fork的奇妙之处在于它被调用一 次,却返回两次,它可能有三种不同的返回值: 1.在父进程中,fork返回新创建的子进程的PID; 2.在子进程中,fork返回0; 3.如果出现错误,fork返回一个负值
9.
if(!(child=vfork()))
10.
{
11.
printf("This is son,his pid is:%d and the count is:%d\n",getpid(),++count);
12.
exit(1);
13.
}else{
14.
printf("After son,This is father,his pid is:%d and the count is:%d,and the
else
printf("fork failed.\n");
printf("This is third time,pid=%d\n",pid);
printf("This is fouth time,pid=%d\n",pid);
return 0;
.
}
进程创建—思考运行结果?
父进程的数据空间、堆栈空间都会给子进 程一个拷贝,而不是共享这些内存。在子 进程中对count进行自加1的操作,但是并 没有影响到父进程中的count值,父进程 中的count值仍然为0。
count++;
printf("count=%d\n",count);
if(pid>0)
printf("This is parent process,the child has the pid:%d\n",pid);
else if(!pid)
printf("This is the child process.\n");
.
执行程序
#include<unistd.h> main() {
execlp(”ls”,”ls”,”al”,”/etc/passwd”,(char*)0);
}
.
执行程序
#include<unistd.h> int execv(const char*path,char*const argv[]) 功能: 执行参数path所指定的文件,与execl()不同的 地方在于execve()只需两个参数,第二个参数 利用数组指针来传递给执行文件。