Добрый день.
Нужно перехватить в консольной программе все данные отправляемые в stdout (функциями printf puts) и что то с ними сделать. Как можно это сделать? Вообще нужно вывести на экран другим способом данные.
Здравствуйте Lea, Вы писали:
Lea>Добрый день. Lea>Нужно перехватить в консольной программе все данные отправляемые в stdout (функциями printf puts) и что то с ними сделать. Как можно это сделать? Вообще нужно вывести на экран другим способом данные.
Здравствуйте Belegel, Вы писали:
B>Здравствуйте Lea, Вы писали:
Lea>>Добрый день. Lea>>Нужно перехватить в консольной программе все данные отправляемые в stdout (функциями printf puts) и что то с ними сделать. Как можно это сделать? Вообще нужно вывести на экран другим способом данные.
B>Попробуй freopen(). B>Belegel.
с помощью freopen() можно перенаправить только в файл, что в принципе не нужно. Задача стоит вывести все данные из stdout опять же на экран, только другим способом (нечто вроде скроллируемого лога). Проблемма в том что в проекте используеться множество статических либ которые используют stdout.
Здравствуйте Lea, Вы писали:
Lea>Здравствуйте Belegel, Вы писали:
B>>Здравствуйте Lea, Вы писали:
Lea>>>Добрый день. Lea>>>Нужно перехватить в консольной программе все данные отправляемые в stdout (функциями printf puts) и что то с ними сделать. Как можно это сделать? Вообще нужно вывести на экран другим способом данные.
B>>Попробуй freopen(). B>>Belegel.
Lea> с помощью freopen() можно перенаправить только в файл
С помощью freopen можно перенаправить данные в pipe, что тебе поможет.
см _pipe и _fdopen.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Lea, Вы писали:
Lea>Здравствуйте Anatolix, Вы писали:
A>>С помощью freopen можно перенаправить данные в pipe, что тебе поможет. A>>см _pipe и _fdopen.
Lea>то что stdout можно ассоциировать со stream я понял, но как теперь сзязать с pipe?
создаешь pipe с помощью _pipe
с помощью _fdopen превращаешь его в FILE
с помощью freopen подцепляешь к выходу
cм msdn на каждую функцию
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев