Перенаправить стандартный вывод на Unix

0

Я делаю проект с использованием библиотеки 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...

Есть идеи?

Спасибо !

Теги:
stdout

1 ответ

0
Лучший ответ

freopen("/dev/tty", "w", stdout); это нормально. Однако SDL никогда не возобновлял stdout/stderr на linux.

SDL 1.2 сделал это на окнах и, в зависимости от конфигурации, на mac os. SDL2 упал, и теперь он никогда не перенаправляет вывод.

  • 0
    Полезно знать, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню