Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ввод вывода консоли 
V
    Опции темы
Леопольд
Дата 10.9.2009, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 3
Всего: 13



День добрый!

Подскажите пожалуйста кто-нибудь как мне прочитать из консоли вывод другой программы в стандартный поток ввода, или аналогичную систему без участия файловых потоков. Желательно что-бы работало и под NIX и под WIN.
Вот что мне надо:
Код

int main(){
     system("echo $DISPLAY");
     //здесь мне надо получить вывод этой команды
}





--------------------
вопросов больше чем ответов
PM MAIL   Вверх
mrbrooks
Дата 10.9.2009, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



посмотри про popen
PM MAIL   Вверх
Леопольд
Дата 10.9.2009, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 3
Всего: 13



Спасибо!

Случаем, нельзя FILE* прикрутить к std::cin? smile


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
mrbrooks
Дата 10.9.2009, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Цитата(Леопольд @  10.9.2009,  08:45 Найти цитируемый пост)
Случаем, нельзя FILE* прикрутить к std::cin?

не думаю. в таком случае почему бы не использовать std::ifstream вместо FILE*, раз уж юзаешь std::cin
PM MAIL   Вверх
azesmcar
Дата 10.9.2009, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(Леопольд @  10.9.2009,  08:45 Найти цитируемый пост)
Случаем, нельзя FILE* прикрутить к std::cin?

Не совсем понятно..что именно нужно сделать? Можно при вызове приложения передать на вход файл
myapp.exe < input.txt
еще можно посмотреть функции dup, dup2.
http://msdn.microsoft.com/en-us/library/ms235445(VS.80).aspx
еще есть функция freopen

Это сообщение отредактировал(а) azesmcar - 10.9.2009, 09:09
PM   Вверх
andrew_121
Дата 10.9.2009, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Цитата(azesmcar @  10.9.2009,  09:08 Найти цитируемый пост)
Не совсем понятно..что именно нужно сделать?

нее... походу ему нужно стандартный вывод перенаправить std::cin, или std::ifstream


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
bsa
Дата 10.9.2009, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Леопольд, думаю тебе помогут функции:
dup2
fileno
и дескриптор стандартного потока ввода STDIN_FILENO
PM   Вверх
Леопольд
Дата 10.9.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 3
Всего: 13



Спасибо всем откликнувшимся!

Добавлено @ 16:41
Цитата(mrbrooks @  10.9.2009,  08:57 Найти цитируемый пост)
не думаю. в таком случае почему бы не использовать std::ifstream вместо FILE*, раз уж юзаешь std::cin 

Если при этом ничего не писать на диск, то вполне подошло бы, мне надо чтобы работало если у юзера нет права записи. Насколько я понял popen ничего не пишет в файл, он создаёт тред, который пишет в буфер из которого я потом могу читать как из файлового потока. 
Так как программулина на С++, предпочитаю как можно меньше работать с С библиотеками. Но какими средствами С++ это сделать, не знаю. 
Если FILE* можно стандартными средствами прикрутить к std::ifstream, то это меня вполне устроило бы smile

Это сообщение отредактировал(а) Леопольд - 10.9.2009, 18:05


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
bsa
Дата 10.9.2009, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Леопольд, при большом желании можешь сам написать свою версию fstream, которая будет принимать в качестве параметра FILE*.
PM   Вверх
Леопольд
Дата 12.9.2009, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 3
Всего: 13



Цитата(bsa @  10.9.2009,  20:58 Найти цитируемый пост)
 при большом желании можешь сам написать свою версию fstream

обойдусь FILE'ом, заверну его куда-нибудь...

Это сообщение отредактировал(а) Леопольд - 12.9.2009, 22:18


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0717 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.