Linux进程程序替换exec

创建子进程的目的:让子进程执行父进程代码的一部分 

但是如何让子进程执行一个全新的程序?

进程的程序替换:进程不变,仅仅替换当前进程的代码和数据,磁盘上的数据加载到内存中

要明白程序的本质就是一个文件    文件=程序代码+程序数据

注意进程替换没有创建新的程序,他只是替换原有的。

替换函数
其实有六种以exec开头的函数,统称exec函数:

只要进程的程序替换成功,就不会执行后续代码,意味着exec函数成功的时候,不需要返回值检测!    只要返回了,就一定是调用失败了 

#include <unistd.h>`
int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg, ...,char *const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);


//path:要执行的目标程序的全路径,所在路径/文件名
//arg:要执行的目标程序在命令行上怎么执行,这里参数就怎么一个一个传递进去
//...:可变参数列表

这些函数如果调用成功则加载新的程序从启动代码开始执行,不再返回。
如果调用出错则返回-1
所以exec函数只有出错的返回值而没有成功的返回值。

后缀的含义:
l(list) : 表示参数采用列表
v(vector) : 参数用数组
p(path) : 有p自动搜索环境变量PATH
e(env) : 表示自己维护环境变量
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值