c语言的文件重定向,
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
void test(int fd);
int main() {
// 保存标准输出的文件描述符
int saved_stdout = dup(STDOUT_FILENO);
int fd = open("output.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
if (fd == -1) {
perror("open");
return 1;
}
test(fd);
if (dup2(saved_stdout, STDOUT_FILENO) == -1) {
perror("dup2");
return 1;
}
close(saved_stdout);
printf("This output will be written to the terminal.\n");
close(fd);
return 0;
}
void test(int fd){
if (dup2(fd, STDOUT_FILENO) == -1) {
perror("dup2");
close(fd);
}
printf("This output will be written to the file 'output.txt'.\n");
}
我对输出进行了两次重定向,但是运行后两个printf的输出依旧在终端。有知道是为什么吗?是重定向的作用域就是整个文件且只有最后一个重定向起作用,或者什么其他的原因?