《UNIX环境高级编程》学习笔记——进程控制(二)

来源:互联网 发布:上位机编程视频 编辑:程序博客网 时间:2024/05/17 06:22

exec函数

当进程调用一种exec函数时,该进程执行的程序完全替换为新程序,而新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用一个全新的程序替换了当前进程的正文、数据、堆和栈段

通常在调用fork函数之后,立刻调用exec函数,用于执行新的程序。

有6中不同的exec函数可供使用,它们常常被统称为exec函数。


这些函数之间的第一个区别是前4个取路径名作为参数,后两个则取文件名作为参数。当指定filename作为参数时:

  • 如果filename中包含/,则将其视为路径名。
  • 否则就按PATH环境变量,在它所指定的各目录中搜索可执行文件。

在执行exec函数之后,执行新程序的进程保留了原进程的如下特征:


注意:在执行exec前后实际用户ID和实际组ID保持不变,而有效ID是否改变则取决于所执行程序文件的设置用户ID位和设置组ID位是否设置。如果新程序的设置用户ID位已设置,则有效用户ID变为程序文件所有者的ID,否则有效用户ID不变。对组ID的处理方式与此相同。
0 0