Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11730
Последний выпуск: 19.06.2015

Перенаправление stdout в область памяти (или файл)

Автор: Алексей Кузнецов

Для перенаправления stdout в область памяти (или файл) необходимо написать небольшую конструкцию.

Редирект в память или строку (std::string)

// make stdout buffer
char buf[16384]={0};
int fdpipe[2];
// make pipe
_pipe( fdpipe, sizeof(buf), O_BINARY );
// backup stdout handle
int old=_dup(_fileno(stdout));
// replace stdout handle with write-pipe
_dup2(fdpipe[1], _fileno(stdout));

// test output
fprint(stdout,"test");

// get collected buffer
int r = read(fdpipe[0],buf,sizeof(buf));
buf[r]=0;
// restore original stdout
_dup2(old, _fileno(stdout));
// make string
std::string str(buf);

Пример для работы с STL std::cout

std:stringstream oss;
std::cout.rdbuf( oss.rdbuf() );
std::cout << "here's some text";

Пример редиректа в файл

stream = freopen( "freopen.out", "w", stderr );
fprintf( stdout, "successfully reassigned\n" );
fclose( stream );

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
21K
10 ноября 2006 года
axet
5 / / 10.11.2006
Мне нравитсяМне не нравится
2 мая 2007, 19:17:24
Адрес статьи автора: http://axet.blogspot.com/2007/04/redirect-stdout-stderr-to-file.html
2.
21K
10 ноября 2006 года
axet
5 / / 10.11.2006
Мне нравитсяМне не нравится
23 апреля 2007, 18:23:00
Перенаправление в файл через bash безусловно удобно, для командного режима. Если вам необходимо управлять потоками из внешнего приложения для перехвата вывода консолей, без такой обработки не обойтись.
3.
21K
10 ноября 2006 года
axet
5 / / 10.11.2006
Мне нравитсяМне не нравится
23 апреля 2007, 18:21:56
Последняя версия документа доступна: http://docs.google.com/Doc?id=dd4b849c_109gnc76b
4.
455
30 января 2007 года
Jail
550 / / 30.01.2007
Мне нравитсяМне не нравится
24 марта 2007, 20:26:53
На Unix, мне как-то больше нравится конструкция ' > ' ( при перенаправлении в файл). :-)
5.
21K
10 ноября 2006 года
axet
5 / / 10.11.2006
Мне нравитсяМне не нравится
11 марта 2007, 15:48:57
Вопросы? Пожелания? Алексей Кузнецов <axet@mail.ru>
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог