编写一个C程序,使用系统调用fork()以创建一个子进程,并使这个子进程调用exec函数族以执行系统命令ls。(使用函数execlp)
时间: 2024-10-11 07:11:50 浏览: 59
在C语言中,你可以编写一个程序来演示如何通过`fork()`创建子进程,并使用`execlp()`函数让子进程执行系统命令`ls`。下面是一个简单的例子:
```c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main() {
// Fork操作
pid_t pid = fork(); // 创建子进程
if (pid == -1) { // 如果fork失败,打印错误信息并退出
perror("Fork failed");
exit(EXIT_FAILURE);
} else if (pid > 0) { // 父进程,我们继续运行
printf("Parent process with PID %d\n", getpid());
} else { // 子进程,执行新的命令
// 使用execlp替换当前进程
execlp("/bin/ls", "ls", NULL); // 执行ls命令,如果成功,原进程会被终止
// 如果execlp失败,直接使用exit来清理资源
perror("execlp failed");
_exit(EXIT_FAILURE); // 不能捕获这里的错误
}
return 0; // 父进程会到达这里,因为子进程已经执行了其他命令
}
```
在这个示例中,首先调用`fork()`创建一个新的子进程。如果`fork()`返回正值,表示这是一个子进程;如果返回零,则是父进程。子进程中,我们使用`execlp()`来替换当前进程,使其执行`ls`命令。如果`execlp()`执行成功,原来的子进程将结束。
阅读全文