进程及进程控制(二)

来源:互联网 发布:python数据分析的书 编辑:程序博客网 时间:2024/05/31 13:14

一 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: