进程及进程控制(二)

一 exec函数:

(1)作用:

*exec并不创建进程,只是用一个全新的程序替换当前进程的正文、数据、堆和栈段,exec前后进程的ID并未改变。

*exec的新程序可以是:带有main函数的程序、linux命令或自己写的脚本文件等可执行文件

*execve是系统调用,其余五个是库函数,它们都要调用execve。


(2)种类(6个exec函数):

*基本的进程控制原语:用fork创建新进程、用exec执行执行新程序、exit和wait(或waitpid)用来处理终止和等待终止。

 exec函数如下图,注意这些函数的区别。


6个函数区别:

*第一个参数,前四个取路径名为参数,后两个取文件名为参数。

*参数表的传递不同。

*向新程序传递环境变量表不同。


(3)新程序进程与原进程:



二 竞争条件:

(1)竞争条件:当多个进程都企图对共享数据进行某种处理,而最后结果又取决于进程运行的顺序。

*如果一个进程等待一个子进程终止,它必须调用wait函数。

*如果一个进程要等待父进程终止,则可使用下面循环:

while(getppid()!=1)

sleep(1);

这种循环称为轮询,浪费了CPU时间。


(2)为了避免竞争条件和轮询,在多个进程之间需要某种形式的交互。

如:信号、进程间通信(IPC)。


三 与进程相关的用户ID(待补充)

(1)特权是基于用户和组ID的:当程序需要增加特权,或需访问当前不允许访问的资源时,需要更换自己的用户ID或组ID,使得新ID具有合适的特权和访问权限。


(2)与进程有关的用户ID:


(3)更改用户ID和组ID:








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值