Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 06.12.2012
Сообщений: 11

Работа с коммандными оболочками сторонних программ

16.03.2015, 18:23. Показов 745. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Суть такова: есть клиентская программа (не важно, какая), которая предоставляет свою коммандную оболчку.
Вопрос состоит в том, как органивать ввод команды и вывод результата через самописную программу, т.е. полученный результат нужно сохранить.
Из того, что смог найти -- через popen() получение выхлопа отработавшей команды, что как минимум половина задачи.
Как я понял, popen() в Linux открывает канал только либо на чтение, либо на запись.

А что в моём случае лучше использовать? Можете посоветовать что-нибудь?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.03.2015, 18:23
Ответы с готовыми решениями:

Загрузка сторонних программ без ведома пользователя, некорректная работа браузера Chrom
Здравствуйте! Пожалуйста помогите очистить систему в ноутбуке от вирусов? Постоянно подгружаются левые программы, которые пока в принципе...

Контроль сторонних программ
Говорят, что Windows 8 проверяет лицензионность всех программ, которые стоят на компьютере, и если какую-то из них посчитает варезом, то...

Сворачивание сторонних программ
Дело вот в чем. Есть прога, которая через некоторое время должна скрыть все программы и на рабочем столе появиться окно, типа 'ваше...

10
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,798
Записей в блоге: 1
16.03.2015, 19:10
А в чём проблема?
Считываем с "терминала" командную строку - gets(), загоняем её во вновь созданный popen() - считываем выхлоп и выводим его на "терминал" через puts()...

Или я не так понял?
0
2 / 2 / 0
Регистрация: 06.12.2012
Сообщений: 11
16.03.2015, 19:51  [ТС]
drfaust, не совсем.
Клиент по идее должен работать параллельно с нашей программой. Грубо говоря, нужно как-то загнать в коммандную оболочку клиента строку через программу и считать выхлоп. С popen() такое нельзя провернуть, как минимум из-за того, что наша программа может зависнуть в ожидании завершения клиента, если, конечно, работать в одном потоке.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
16.03.2015, 20:26
Цитата Сообщение от drfaust Посмотреть сообщение
gets()
Don't use gets.
0
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,798
Записей в блоге: 1
16.03.2015, 22:33
Цитата Сообщение от korvin_ Посмотреть сообщение
Don't use gets.
Это для примера. Если писать своё подобие командной оболочки то и readline мало будет.

Цитата Сообщение от kachsheev Посмотреть сообщение
drfaust, не совсем
Тогда вообще не понял - клиент-сервер какой-то?
0
2 / 2 / 0
Регистрация: 06.12.2012
Сообщений: 11
16.03.2015, 22:48  [ТС]
drfaust, похоже плоховато сформулировал.
Окей. Попробуем так.

Через написанную прогу подключились к ftp-серверу с помошью консольного клиента. Этот клиент ждет команды через стандартный ввод. Как программулине "сказать", чтобы она через стандартный ввод ввела нужную команду ftp-клиенту и получила выхлоп и, например, вывела?

Т.е. суть в том, что программа писала в стандартный ввод и перехватывала стандартный вывод.

Просто застрял на том, куда копать.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
16.03.2015, 22:55
Цитата Сообщение от drfaust Посмотреть сообщение
Если писать своё подобие командной оболочки то и readline мало будет.
Дело не в много/мало.
0
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,798
Записей в блоге: 1
16.03.2015, 23:28
Цитата Сообщение от korvin_ Посмотреть сообщение
Дело не в много/мало.
Это был пример, чтобы понять что требуется. И в данном случае плевать на безопасность и функционал.
Цитата Сообщение от kachsheev Посмотреть сообщение
Через написанную прогу подключились к ftp-серверу с помошью консольного клиента. Этот клиент ждет команды через стандартный ввод. Как программулине "сказать", чтобы она через стандартный ввод ввела нужную команду ftp-клиенту и получила выхлоп и, например, вывела?
каналы через stdin/stdout?
0
2 / 2 / 0
Регистрация: 06.12.2012
Сообщений: 11
17.03.2015, 00:11  [ТС]
Угу.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
17.03.2015, 00:55
Цитата Сообщение от kachsheev Посмотреть сообщение
Просто застрял на том, куда копать.
да куда тут копать?
Bash
1
echo -e "first input command\nsecond input command\n" | wc
0
2 / 2 / 0
Регистрация: 06.12.2012
Сообщений: 11
17.03.2015, 01:05  [ТС]
Этот кусок форума не про баш, а про Си.

Еще раз. Есть ли способы "приконнектиться" к процессу, который предоставляет свою командную оболочку, чтобы можно было писать команды и получать результат?

Языки программирования -- C или C++.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2015, 01:05
Помогаю со студенческими работами здесь

Запуск сторонних программ
Добрый день. Подскажите как можно запустить из скрипта, который храниться на сети \\Serv\tra-ta-ta, запустить exe, который лежит...

Установка сторонних программ
Всем доброго дня! Столкнулся с очередным вирусом на установку сторонних программ. Тормозит система

Ресурсы сторонних программ
Вопрос такой: можно ли на C# или на VB 2008 реализовать работу со сторонними ресурсами, что хочется вытаскивать иконки, вытаскивать текст и...

Активность сторонних программ
Доброго времени суток, пишу на диплом программу учета рабочего времени сотрудников. Вижу это так: Есть список разрешенных программ (1С,...

Принимающий параметр от сторонних программ
Есть программа WinForm. Нужно в этой программе сделать чтобы она при запуске принимала числовой параметр который ей будет передаваться...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru