linux中exec函数
时间: 2023-09-02 09:12:13 浏览: 101
PHP中exec函数和shell_exec函数的区别
exec函数是Linux系统中的一个系统调用,用于在当前进程中执行一个新的程序,替换当前进程的代码和数据,从而使新程序成为当前进程。
exec函数有多个变种,包括execl、execle、execlp、execv、execvp等。它们的区别在于参数的传递方式和可执行文件的搜索路径等不同。
一般情况下,exec函数会覆盖当前进程的地址空间,因此,调用exec函数后,原进程的代码和数据都会被新进程替换,从而新进程获得了原进程的权限和资源。因此,exec函数常用于创建子进程并在子进程中执行一个新的程序。
示例代码:
```c
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
printf("This is the original process.\n");
// 创建子进程
pid_t pid = fork();
if (pid == -1) {
perror("fork failed");
return -1;
} else if (pid == 0) {
// 在子进程中执行ls命令
execl("/bin/ls", "ls", "-l", NULL);
perror("execl failed");
return -1;
} else {
// 父进程等待子进程结束
wait(NULL);
printf("Child process finished.\n");
}
return 0;
}
```
在上面的代码中,我们创建了一个子进程,并在子进程中执行了ls命令。在执行execl函数时,第一个参数是可执行文件的路径,第二个参数是可执行文件的名称,后面的参数是传递给可执行文件的参数列表。如果execl函数执行成功,则不会返回,否则会返回-1,并输出错误信息。在父进程中,我们使用wait函数等待子进程结束,并输出相应的信息。
阅读全文