1、exec函数族
让父子进程执行不相干的操作
能够替换进程地址空间的源代码 .txt 段
当前程序中调用另外一个应用程序
首先想到 exec 之前需要 fork
返回值:
如果函数执行成功,不返回
不如执行失败,打印错误信息,退出当前进程
1、实现换核不换壳功能
2、执行一个另外的程序不需要创建额外的地址空间
3、有一个运行的程序 a,在 a 中调用另外的应用程序
调用 exec 族函数重新填写新的代码
exec(“ls”)
2、执行指定目录下的程序
int execl (const char *path, const char *arg, …)
path:要执行的程序的绝对路径
变参 arg:要执行的程序需要的参数
第一 arg:占位
后边的 arg:命令的参数
参数写完之后:NULL
一般执行自己写的程序
int execv(const char *path, char const argv[ ]);
参数
path = /bin/ps
char args[ ] = {“ps”, “aux”, NULL};
execv("/bin/ps", args);
3、执行PATH环境变量能够搜索到的程序
int execlp (const char*file, const char *arg, …);
file:文件名,系统自动从环境变量 “$PATH” 所指出的路径中进行查找。
第一 arg:占位
后边的 arg:命令的参数
参数写完之后:NULL
执行系统自带的程序
/bin
execlp 执行自定义的程序:file 参数绝对值
int execvp (const char *file, const char *arg, …);
*file 文件名,系统自动从环境变量 “$PATH” 所指出的路径中进行查找。
4、
int execle (const char *path, const char *arg, …)
*path:完整的文件目录路径
系统调用函数
int execve (const char *path, char *const argv[ ]);
*path:完整的文件目录路径