创建子进程,在子进程中使用 exec 系列函数执行“ls -l”命令,父进程等待子进程结束后输出“child over”。
时间: 2024-03-08 08:49:01 浏览: 131
在Linux中,可以使用fork和exec系列函数来创建子进程并执行外部命令。下面是一个简单的示例代码,实现了创建子进程,在子进程中使用exec系列函数执行“ls -l”命令,父进程等待子进程结束后输出“child over”:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main()
{
pid_t pid = fork(); //创建子进程
if (pid == -1) //创建失败
{
perror("fork");
exit(EXIT_FAILURE);
}
else if (pid == 0) //子进程
{
execl("/bin/ls", "ls", "-l", NULL); //执行ls -l命令
perror("exec"); //execl函数只有在执行失败时才会返回,因此如果代码执行到这里,说明execl执行失败
exit(EXIT_FAILURE);
}
else //父进程
{
wait(NULL); //等待子进程结束
printf("child over\n");
exit(EXIT_SUCCESS);
}
}
```
该代码中,首先调用fork函数创建子进程,如果创建失败则输出错误信息并退出。如果是子进程,则调用execl函数执行“ls -l”命令,如果执行失败则输出错误信息并退出。如果是父进程,则等待子进程结束后输出“child over”。
需要注意的是,执行execl函数后,如果成功执行了外部命令,则子进程的代码已经被替换为了外部命令的代码,因此在子进程中后面的代码并不会执行。如果子进程需要继续执行其他代码,可以使用fork函数创建另一个子进程,并在新的子进程中执行其他代码。
阅读全文