【问题标题】:Redirect stdout on Unix在 Unix 上重定向标准输出
【发布时间】:2014-07-19 12:04:54
【问题描述】:

我正在使用 SDL 库做一个项目。

我注意到 stdout 和 stderr 被重定向到 2 个文件:stdout.txt 和 stderr.txt。

我设法将流重定向回 Windows 平台,但我无法在 Unix 平台上执行此操作...

void redirectSDLStreams () {
    #ifdef _WIN32
    freopen("CONOUT$", "w", stdout);
    freopen("CONOUT$", "w", stderr);
    #elifdef __unix__ // Not sure about it tho
    // Code for Unix
    #endif
}

我试过了:

printf("Ok from stdout\n") // Prints something
freopen("/dev/tty", "w", stdout);
printf("Ok from /dev/tty\n") // Prints nothing

和:

printf("Ok from stdout\n") // Prints something
freopen("/dev/stdout", "w", stdout);
printf("Ok from /dev/stdout\n") // Prints nothing

但是在 Fedora 17 上两者都失败了......

有什么想法吗?

谢谢!

【问题讨论】:

    标签: c++ c unix stdout


    【解决方案1】:

    freopen("/dev/tty", "w", stdout); 没问题。但是,SDL 从未在 linux 上重新打开 stdout/stderr。

    SDL 1.2 在 windows 上执行此操作,根据配置,在 mac os 上执行此操作。 SDL2 放弃了它,现在从不重定向输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-10
      • 2014-01-20
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多