c - 如何在 freopen ("out.txt", "a", stdout 之后将输出重定向回屏幕)

标签 c posix stdout

#include <stdio.h>

int main() {
    printf("This goes to screen\n");
    freopen("out.txt", "a", stdout);
    printf("This goes to out.txt");
    freopen("/dev/stdout", "a", stdout);
    printf("This should go to screen too, but doesn't\n");

    return 0;
}

我调用 freopen 将 stdout 重定向到 out.txt 然后我在文件上打印一些东西,现在我想将它重定向回屏幕,但是 freopen("/dev/stdout", "a", stdout); 不起作用。有没有办法使用 ANSI C 或 POSIX 系统调用来做到这一点?

最佳答案

我想不出一种跨平台的方式来做到这一点,但是在 GNU/Linux 系统上(也许还有其他 POSIX 兼容的系统)你可以 freopen ("/dev/tty ", "a", 标准输出)。这是您想要做的吗?

关于c - 如何在 freopen ("out.txt", "a", stdout 之后将输出重定向回屏幕),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1908687/

相关文章:

Bash 脚本 - 标准输出文件描述符?

c - 如何将基于 C 的语言添加到 GCC

c - 为什么在 POSIX 中创建消息队列时出现错误 "Cannot Allocate Memory"?

c - 传递打开的目录作为参数

linux - 这个 Bash(和/或其他 shell?)构造叫什么?

c - 将输出从 stdout 重定向到字符串?

c++ - 在不同实例中通过字符指针以不同填充打印十六进制值

c - 查看用户输入以查看它是否是 float 的,总是返回 true

c - 当参数之一是函数调用时,printf 如何在 c 中工作

c - ftruncate() 的参数是什么?