c语言中Exec函数,子进程的执行 -- exec 函数

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

有6种不同的 exec 函数可供使用:

int execl (const char *pathname, const char *arg0, ... /* (char *)0 */ );

int execv (const char *pathname, char *const argv[] );

int execle (const char *pathname, const char *arg0, ... /* (char *)0, char *const envp[] */ );

int execve (const char *pathname, char *const argv[] , char *const envp[] );

int execlp (const char *filename, const char *arg0, ... /* (char *)0 */ );

int execvp (const char *filename, char *const argv[] );

六个函数都定义于  头文件中,若出错返回-1,若成功则没有返回值

存放在硬盘上的可执行程序文件被执行的唯一方法就是由一个现有进程调用上述六个 exec 函数中的某一个

六个函数的区别在于前四个以路径名作为参数,后两个以文件名为参数,如果 filename 中包含 /,则将其视为路径名,否则在 PATH 环境变量所指

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值