exec()
函数是用于在Linux、Windows和MacOS操作系统中创建和运行进程的函数。 exec()
函数有不同的有用变体,如 execve()
, execl()
, execlp()
, execle()
等。
一般语法
有很多不同的 exec()
功能变体。 下面是一些语法。
int execl(const char *path, const char *arg, (char *) NULL );int execlp(const char *file, const char *arg, (char *) NULL );int execle(const char *path, const char *arg, (char *) NULL, 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[]);
示例C代码
在 exec()
函数示例我们将使用下面的C代码作为示例。
#include#include #include int main(){ //Run Bash By Creating New Process char *args[]={"/bin/bash",NULL}; execvp(args[0],args); printf("Ending-----"); return 0;}
编译C代码
为了编译给定的示例并创建可执行文件,我们将使用gcc来编译示例源代码。我们假设我们将把源代码放到文件中 example.c
.
$ gcc -o example example.c
我们将运行 example
像下面这样。
$ ./example
使用execvp()函数创建进程
execcvp()
可以运行作为第一个参数提供的任何二进制或shell脚本。在本例中,我们将运行二进制 /bin/bash
.
#include#include #include int main(){ //Run Bash By Creating New Process char *args[]={"/bin/bash",NULL}; execvp(args[0],args); printf("Ending-----"); return 0;}
使用execv()函数创建进程
execv()
函数可以用来提供我们希望作为进程运行的可执行文件并提供参数。在本例中,我们将以char数组的形式提供参数。
#include#include #include int main(){ //Run Bash By Creating New Process char *args[]={"ls","-l",NULL}; execv("/bin/ls",args); printf("Ending-----"); return 0;}
使用execl()函数创建进程
与 execl()
函数我们可以直接向函数提供可执行的和参数,并得到返回代码。
#include#include #include int main(){ //Run Bash By Creating New Process int ret; ret=execl("/bin/ls","-l",NULL); printf("Ending-----"); return 0;}
使用execlp()函数创建进程
如果我们现在不知道给定可执行文件的示例路径,我们可以搜索它。当前环境变量将用于搜索给定的可执行文件搜索。在本例中,我们将搜索 ls
命令。
#include#include #include int main(){ //Run Bash By Creating New Process int ret; ret=execlp("ls","ls","-l",NULL); printf("Ending-----"); return 0;}
使用execle()函数创建进程
的默认行为 exec
函数正在使用默认环境。但是我们可以用 execle()
功能。我们将使用char数组指针,它将保存用 =
等号。在本例中,我们将指定 HOME
环境变量。
#include#include #include int main(){ //Run Bash By Creating New Process int ret; char *env[]={"HOME=/home/ismail","LOG=/var/log",NULL}; ret=execlp("ls","ls","-l",NULL); printf("Ending-----"); return 0;}
PHP exec()函数
PHP提供单一 exec()
可以直接在操作系统shell中运行命令的函数。在本例中,我们将运行命令 ls
并用 echo
PHP语句。