fork() execl
时间: 2023-08-10 14:02:50 浏览: 55
fork() 和 execl() 函数通常一起使用,用于在子进程中执行一个新的程序。fork() 函数用于创建子进程,而 execl() 函数用于在子进程中执行一个新的程序。
execl() 函数的原型如下:
```c
int execl(const char *path, const char *arg0, const char *arg1, ..., const char *argn, (char *)0);
```
其中,path 参数是要执行的新程序的路径名,arg0、arg1、...、argn 参数是新程序的命令行参数,最后一个参数必须为 NULL。execl() 函数会将当前进程替换为新程序的进程,因此在 execl() 函数后面的代码都不会被执行。
下面是一个简单的示例,演示如何使用 fork() 和 execl() 函数创建子进程并执行一个新的程序:
```c
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
pid_t pid;
pid = fork();
if (pid < 0) {
printf("Error: fork failed.\n");
} else if (pid == 0) {
// 子进程
printf("Child process: pid = %d, ppid = %d.\n", getpid(), getppid());
execl("/bin/ls", "ls", "-l", NULL);
printf("This line will not be executed.\n");
} else {
// 父进程
printf("Parent process: pid = %d, ppid = %d, child pid = %d.\n", getpid(), getppid(), pid);
wait(NULL);
}
return 0;
}
```
在这个示例中,子进程调用了 execl() 函数执行 /bin/ls 程序,并传递了两个参数 -l。在 execl() 函数后面的代码都不会被执行,因为子进程已经被替换为新程序的进程。父进程使用 wait() 函数等待子进程结束。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)