Перехват данных на stdout?
От: Lea  
Дата: 10.10.02 10:27
Оценка:
Добрый день.
Нужно перехватить в консольной программе все данные отправляемые в stdout (функциями printf puts) и что то с ними сделать. Как можно это сделать? Вообще нужно вывести на экран другим способом данные.
Re: Перехват данных на stdout?
От: Belegel  
Дата: 10.10.02 10:47
Оценка:
Здравствуйте Lea, Вы писали:

Lea>Добрый день.

Lea>Нужно перехватить в консольной программе все данные отправляемые в stdout (функциями printf puts) и что то с ними сделать. Как можно это сделать? Вообще нужно вывести на экран другим способом данные.

Попробуй freopen().

Belegel.
Re[2]: Перехват данных на stdout?
От: Lea  
Дата: 10.10.02 10:56
Оценка:
Здравствуйте Belegel, Вы писали:

B>Здравствуйте Lea, Вы писали:


Lea>>Добрый день.

Lea>>Нужно перехватить в консольной программе все данные отправляемые в stdout (функциями printf puts) и что то с ними сделать. Как можно это сделать? Вообще нужно вывести на экран другим способом данные.

B>Попробуй freopen().

B>Belegel.

с помощью freopen() можно перенаправить только в файл, что в принципе не нужно. Задача стоит вывести все данные из stdout опять же на экран, только другим способом (нечто вроде скроллируемого лога). Проблемма в том что в проекте используеться множество статических либ которые используют stdout.
Re[3]: Перехват данных на stdout?
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 10.10.02 12:40
Оценка:
Здравствуйте Lea, Вы писали:

Lea>Здравствуйте Belegel, Вы писали:


B>>Здравствуйте Lea, Вы писали:


Lea>>>Добрый день.

Lea>>>Нужно перехватить в консольной программе все данные отправляемые в stdout (функциями printf puts) и что то с ними сделать. Как можно это сделать? Вообще нужно вывести на экран другим способом данные.

B>>Попробуй freopen().

B>>Belegel.

Lea> с помощью freopen() можно перенаправить только в файл


С помощью freopen можно перенаправить данные в pipe, что тебе поможет.
см _pipe и _fdopen.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[4]: Перехват данных на stdout?
От: Lea  
Дата: 10.10.02 13:46
Оценка:
Здравствуйте Anatolix, Вы писали:

A>С помощью freopen можно перенаправить данные в pipe, что тебе поможет.

A>см _pipe и _fdopen.

то что stdout можно ассоциировать со stream я понял, но как теперь сзязать с pipe?
Re[5]: Перехват данных на stdout?
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 11.10.02 12:48
Оценка:
Здравствуйте Lea, Вы писали:

Lea>Здравствуйте Anatolix, Вы писали:


A>>С помощью freopen можно перенаправить данные в pipe, что тебе поможет.

A>>см _pipe и _fdopen.

Lea>то что stdout можно ассоциировать со stream я понял, но как теперь сзязать с pipe?


создаешь pipe с помощью _pipe
с помощью _fdopen превращаешь его в FILE
с помощью freopen подцепляешь к выходу

cм msdn на каждую функцию
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.