【文件属性】:
文件名称:exec函数-数据流图到模块结构图的直接转换方法
文件大小:5.82MB
文件格式:PDF
更新时间:2024-07-12 01:23:40
APUE UNIX
8.9 exec函数
8 . 3节曾提及用f o r k函数创建子进程后,子进程往往要调用一种e x e c函数以执行另一个程序。
当进程调用一种 e x e c函数时,该进程完全由新程序代换,而新程序则从其 m a i n函数开始执行。
因为调用e x e c并不创建新进程,所以前后的进程 I D并未改变。e x e c只是用另一个新程序替换了
当前进程的正文、数据、堆和栈段。
有六种不同的e x e c函数可供使用,它们常常被统称为 e x e c函数。这些e x e c函数都是U N I X进
程控制原语。用f o r k可以创建新进程,用e x e c可以执行新的程序。e x i t函数和两个w a i t函数处理
终止和等待终止。这些是我们需要的基本的进程控制原语。在后面各节中将使用这些原语构造
另外一些如p o p e n和s y s t e m之类的函数。
#include
int execl(const char *p a t h n a m e, const char *a rg 0, ... /* (char *) 0 */);
int execv(const char *p a t h n a m e, char *const a rgv [] );
int execle(const char *p a t h n a m e, const char *a rg 0, ...
/* (char *)0, char *const e n v p [] */);
int execve(const char *p a t h n a m e, char *const a rgv [], char *const envp [] );
int execlp(const char *f i l e n a m e, const char *a rg 0, ... /* (char *) 0 */);
int execvp(const char *f i l e n a m e, char *const a rgv [] );
六个函数返回:若出错则为- 1,若成功则不返回
这些函数之间的第一个区别是前四个取路径名作为参数,后两个则取文件名作为参数。当
指定f i l e n a m e作为参数时:
1 5 6 U N I X环境高级编程