exec 函数族是Linux 系统中的系统调用函数,它们都以 exec 开头,共有 6 个,分别是 execl、execle、execlp、execv、execve、execvp,使用 exec 函数可以将当前的进程替换为一个新进程,且新进程与原进程具有相同的 PID。 函数原型 #include <unistd.h> extern char **environ
–execvp: 通过一个指针数组传递参数,数组的最后一个元素必须为NULL。 –execlp: 通过参数列表传递参数,参数列表必须以NULL结尾。 –execle: 与execlp类似,但可以指定新进程的环境变量。 4. exec命令的返回值: exec命令执行成功时不会返回,因为当前进程已经被替换为新的程序。如果exec命令执行失败,则返回-1,并设置...
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[]); 1. 2. 3. 4. 5. 参数: path参数表示你要启...
execlp参数设置,第一个参数为文件名,第二个参数也为文件名(和main函数种argc、argv[]同理,所以传的第一个参数为文件名),后面的参数为变参,以NULL结尾。 execl参数设置,第一个为路径path,后面的参数和execlp相同。 execlp函数和execl函数运行结果
(2)execlp和execvp 这两个函数在上面2个基础上加了p,较上面2个来说,区别是:上面2个执行程序时必须指定可执行程序的全路径(如果exec没有找到path这个文件则直接报错),而加了p的传递的可以是file(也可以是path,只不过兼容了file。加了p的这两个函数会首先去找file,如果找到则执行执行,如果没找到则会去环境变量...
如果是用execlp,那么第一个参数就可以不用加ls的路径了,直接是ls就可以了,因为系统会去PATH中查找。如果是execv的话,后面的参数就要是一个指针数组的形式,可以看下面的代码: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 #include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<unistd.h>...
execlp("ls","sdsffdfd","-a","-l",NULL); (2)execl函数 函数原型:int execl(const char*file,const char*arg,...);成功:无返回,失败:返回-1 函数功能:通过可执行文件+程序名+命令参数来执行; 函数参数:参数1是可执行文件的路径,参数2是文件程序名+命令参数。
int execlp(const char * file,const char * arg,……) 第一个参数 文件的路径 第二参数 指令的名字 ... 指令的参数 函数说明: execlp()会从PATH 环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件, 然后将第二个以后的参数当做该文件的argv[0]、argv[1]……, 最后...
execlp的第一个参数为可执行文件名,不是路径 函数回到环境变量中查找指定的可执行文件,找不到就执行失败返回-1 #include<stdio.h>#include<unistd.h>intmain(){//使用execl()pid_tpid = fork();if(pid>0) {printf("parent process pid = %d\n",getpid()); ...