С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Кот Ангенс
318 / 268 / 38
Регистрация: 24.05.2012
Сообщений: 629
#1

Получение вывода другой программы - C++

28.09.2012, 17:13. Просмотров 500. Ответов 7
Метки нет (Все метки)

Требуется запустить консольное приложение и получить текст, который оно вывело в stdout и stderr. Скажите, пожалуйста, как это можно сделать?

Я вижу только один вариант - перенаправлять стандартные потоки в файлы. Сомневаюсь, что это самый быстрый.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2012, 17:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Получение вывода другой программы (C++):

Получение из другой формы ТStringList - C++
Не знаю куда это больше подходит, но появилась необходимость из Form2 получить доступ к ТStringList *myList = new ТStringList();...

Открытие файла другой программы из программы.Косяк. - C++
Итак, есть в программе такой кусок: system("E:\\KMPlayer\\KMPlayer.exe E:\\WINDOWS\\New_year.mp3"); Косяк в том, что пока песня не дойдёт...

Получения вывода стороней программы - C++
Добрый день. Только начал изучать C++. Подскажите, пожалуйста, как на плюсах можно выполнить внешнюю программу и получить результат её...

кориктеровка программы вывода пароля - C++
помогите пожалуйста подкорректировать программу так,чтобы показывало время,затраченное на вычисление пароля,а также чтобы при вводе русских...

Текст программы для вывода массива - C++
Добрый вечер всем! Подскажите, пожалуйста, текст программы для вывода массива: 8 7 7 7 6 6 6 6 6 5 5 5 5 5 5 5 4 4 4 4 ...

Завершение программы после вывода результата - C++
Здравствуйте!! Ниже приведен неполный(без столбцов) работающий код(вроде как). Проблема в том, что уже программа работает и строка...

7
NoMasters
Псевдослучайный
1765 / 1107 / 74
Регистрация: 13.09.2011
Сообщений: 3,149
28.09.2012, 17:17 #2
В какой системе дело происходит? В posix можно в пайпы перенаправить, будет быстро.
1
Кот Ангенс
318 / 268 / 38
Регистрация: 24.05.2012
Сообщений: 629
28.09.2012, 17:19  [ТС] #3
Windows.

Если из обоих потоков слишком сложно, можно только из stdout.
0
NoMasters
Псевдослучайный
1765 / 1107 / 74
Регистрация: 13.09.2011
Сообщений: 3,149
28.09.2012, 17:35 #4
Там есть _popen, который почти как расово верный popen, но только с подчёркиванием и от мелкософта. Но он ловит только stdout
1
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
28.09.2012, 17:53 #5
Можно виндовыми средствами создать пайп и получить для него HFILE, читать через ReadFile()
1
Кот Ангенс
318 / 268 / 38
Регистрация: 24.05.2012
Сообщений: 629
29.09.2012, 15:05  [ТС] #6
NoMasters, спасибо, popen/pclose помогли! В Dev-C++, в отличии от Студии, даже подчеркивать ничего не нужно.

stderr он, кстати, тоже ловит, причем все сообщения из него выводятся ДО сообщений из stdout. Т. е.
C
1
2
3
fprintf(stdout, "2");
fprintf(stderr, "1");
fprintf(stdout, "3");
выводит "123".
Цитата Сообщение от Герц Посмотреть сообщение
Можно виндовыми средствами создать пайп и получить для него HFILE, читать через ReadFile()
Можно подробнее? Просто интересно.
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
29.09.2012, 15:23 #7
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
Можно подробнее? Просто интересно.
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
1
NoMasters
Псевдослучайный
1765 / 1107 / 74
Регистрация: 13.09.2011
Сообщений: 3,149
29.09.2012, 17:10 #8
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
stderr он, кстати, тоже ловит, причем все сообщения из него выводятся ДО сообщений из stdout
Просто вывод в stderr не буферизируется.
0
29.09.2012, 17:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2012, 17:10
Привет! Вот еще темы с ответами:

Получение каталога выполнения текущей программы - C++
необходимо из в ходе выполнения самой программы получить папку, в которой она выполняется знает кто-нить? есть всякие GetCurrentDir,...

Ошибка компиляции модульной программы ввода вывода - C++
Вобщем программа с консольным меню - - Генерация массива; - Запись массива; - Считывание массива и вывод на экран. есть...

Повторное выполнение программы после вывода решения - C++
Приветствую, кто может помочь? Хочу сделать чтобы программы повторилась когда выведется решение, то есть начнется с начала. #include...

Аварийное завершение программы, ошибка в функции вывода. - C++
Здравствуйте все. Пишу программу для сложения, вычитания матриц. Использую перегрузку операторов. При выводе результатов возникает ошибка и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.