在Linux中编写程序,在程序中创建一个子进程,使子进程通过exec更改代码段,执行cat命令。并展示该代码的运行结果
时间: 2024-12-11 14:19:03 浏览: 12
在Linux中,你可以使用`fork()`函数创建一个新的子进程,然后使用`exec()`系列函数(如`execvp()`)替换子进程的整个代码段,让它执行指定的程序,比如`cat`命令。下面是一个简单的C语言示例:
```c
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
int main() {
pid_t child_pid; // 子进程ID
char *cmd[] = {"cat", "/path/to/file.txt", NULL}; // 要执行的命令及参数
// 创建子进程
if ((child_pid = fork()) == -1) { // fork失败处理
perror("Fork failed");
exit(EXIT_FAILURE);
}
// 如果是父进程
if (child_pid == 0) {
// 使用exec替换当前进程
if (execlp(cmd[0], cmd[0], cmd[1], NULL) == -1) { // 替换失败处理
perror("Execl failed");
_exit(EXIT_FAILURE);
}
} else {
// 父进程等待子进程结束
wait(NULL); // 或者用waitpid(child_pid, NULL, 0)
printf("Child process terminated.\n");
}
return 0;
}
```
运行这个程序,它会创建一个子进程并执行`cat /path/to/file.txt`命令。注意替换 `/path/to/file.txt` 为你要读取的实际文件路径。
阅读全文