Прямое перенаправления stdout в stdin
От: 0xff  
Дата: 13.08.07 00:08
Оценка:
Доброго времени суток,

У меня возникла следующая проблема — необходимо перенаправить стандартный вывод в стандартный ввод напрямую, т.е. чтобы при использовании printf() инфу тут же можно было считать с помощью scanf() и т.д. Приложение под OpenGL без текстовых консолей. Пишу на VC++ ED.

Единственный способ, который удалось найти
freopen("tmp.tmp","wt",stdout);
freopen("tmp.tmp","rt",stdin);

Но смущает следующее. Во-первых, создается файл на диске. Во-вторых, по мере поступления инфы, файл разрастается... не смещать же указатель на начало файла после каждого printf()??

Вообще задача банальная — хочется иметь все вкусности printf(), при этом вывод производить на графическую консоль, либо в файл.

Пробовал также использовать dup2() — не помогло. Такое впечатление, что он вообще не работает...

Думаю еще про вариант сделать перегрузку стандартного printf(), но это все какие-то костыли.


Кто-нибудь знает более элегантный способ?

Заранее спасибо.

PS Хочется обойтись стандартным C без Win API, т.к. позже планирую переносить код под *nix.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.