exec系列函数和system函数 | 您所在的位置:网站首页 › exec系列函数 › exec系列函数和system函数 |
包含头文件 功能 用exec函数可以把当前进程替换为一个新进程。 原型 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[]); int execvpe(const char *file, char *const argv[], char *const envp[]);参数 path参数表示你要启动程序的名称包括路径名 arg参数表示启动程序所带的参数 返回值 成功,没有返回值----因为进程替换,他已经去执行别的进程,如果非要说,不妨说是替换进程的返回值,一个正常退出的程序的返回值为 0 失败,返回-1 可分为两组 execl,execlp,execle(都带l,可以将l理解为list)的参数个数是可变的,参数以一个空指针结束。 execv、execvp和execvpe的第二个参数是一个字符串数组(可以理解为vector)。 新程序在启动时会把在argv数组中给定的参数传递到main(不管是不是进程替换,main函数都是一个程序的入口函数) 关于函数的一些解释 名字含字母“p”的函数会搜索PATH环境变量去查找新程序的可执行文件。如果可执行文件不在PATH定义的路径上,就必须把包括子目录在内的绝对文件名做为一个参数传递给这些函数。 名字最后一个字母为"e"的函数可以自设环境变量。 关于这一些列函数的实现 这些函数通常都是用execve实现的,这是一种约定俗成的做法,并不是非这样不可。 int execve(const char *filename, char *const argv[], char *const envp[]);注意,前面6个函数都是C库函数,而execve是一个系统调用。 六个exec函数之间的关系如下图: |
CopyRight 2018-2019 实验室设备网 版权所有 |