控制子进程标准输出到文件中c语言
时间: 2024-03-26 17:41:24 浏览: 14
在C语言中,可以使用重定向符号 ">" 将子进程的标准输出重定向到指定文件中。具体操作步骤如下:
1. 使用管道创建子进程并执行命令,如下所示:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
FILE *fp;
char buffer[1024];
// 打开文件,准备写入子进程标准输出
fp = fopen("output.txt", "w");
// 创建子进程并执行命令
pid_t pid = fork();
if (pid == -1) {
perror("fork error");
exit(EXIT_FAILURE);
} else if (pid == 0) {
// 子进程
int ret = execl("/bin/ls", "ls", NULL);
if (ret == -1) {
perror("execl error");
exit(EXIT_FAILURE);
}
} else {
// 父进程
// 读取子进程标准输出并写入文件
FILE *pipe = popen("ls", "r");
while (fgets(buffer, sizeof(buffer), pipe) != NULL) {
fprintf(fp, "%s", buffer);
}
pclose(pipe);
}
// 关闭文件
fclose(fp);
return 0;
}
```
2. 使用 popen() 函数打开子进程的标准输出管道,并读取管道中的内容,将内容写入指定文件中,如下所示:
```c
FILE *pipe = popen("ls", "r");
while (fgets(buffer, sizeof(buffer), pipe) != NULL) {
fprintf(fp, "%s", buffer);
}
pclose(pipe);
```
这样,子进程的标准输出就可以被重定向到指定文件中了。