Exec系统调用C和PHP教程及示例

exec() 函数是用于在Linux、Windows和MacOS操作系统中创建和运行进程的函数。 exec() 函数有不同的有用变体,如 execve() , execl() , execlp() , execle() 等。

null

一般语法

有很多不同的 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#includeint 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#includeint 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#includeint main(){   //Run Bash By Creating New Process   char *args[]={"ls","-l",NULL};   execv("/bin/ls",args);   printf("Ending-----");   return 0;}

使用execl()函数创建进程

execl() 函数我们可以直接向函数提供可执行的和参数,并得到返回代码。

#include#include#includeint main(){   //Run Bash By Creating New Process   int ret;   ret=execl("/bin/ls","-l",NULL);   printf("Ending-----");   return 0;}

使用execlp()函数创建进程

如果我们现在不知道给定可执行文件的示例路径,我们可以搜索它。当前环境变量将用于搜索给定的可执行文件搜索。在本例中,我们将搜索 ls 命令。

#include#include#includeint 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#includeint 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语句。

相关文章: 如何使用PHP Exec和示例执行Shell命令?

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享