Название: Работа с командной строкой(терминалом) Отправлено: bigory от Октября 29, 2010, 21:02 Здравствуйте!
Подскажите как работать с командной строкой? Я знаю что можно послать в командную строку команду, используя QProcess / system() , но проблема в том, что в нем нельзя послать сразу несколько команд. Т.е. если выполнять так: system(dir); system("pause"); то запустится командная строка, покажет содержимое в директории, потом закроется, запуститься новое и выполниться остановка. Как выполнить все команды в одном окне? Как получать то, что выводит командная строка? Название: Re: Работа с командной строкой(терминалом) Отправлено: Alex_cs_gsp от Октября 29, 2010, 21:58 Не понимаю зачем такое может понадобится, для получения списка файлов в Qt есть другие механизмы.
Но если это нужно, то можно перенаправить вывод в текстовый файл и считать оттуда. Название: Re: Работа с командной строкой(терминалом) Отправлено: bigory от Октября 29, 2010, 23:15 Мне нужно написать программу клиент, который по команде сервера делает настройки системы, удаляет ненужные файлы и прочее. Помимо связи с сервером, она должна быть еще и невидимой.
С невидимостью я разобрался, со связью с сервером разобраться не сложно, осталось только понять как как отвечать на вопросы, которые может задавать консоль и передавать в качестве переменных сообщения, которые выводит консоль. Название: Re: Работа с командной строкой(терминалом) Отправлено: Denjs от Октября 30, 2010, 01:20 сдается мне - вам сюда:
http://www.prog.org.ru/index.php?topic=5677.msg25539#msg25539 и сюда http://www.prog.org.ru/index.php?topic=10611.msg63701#msg63701 (тут есть исходники как для родительского так и для дочернего приложения). не? т.е. предлагаю вам искать в направлении дочерних процессов и работы с stdin|stdout дочерней программы/потока. т.е. запускаете bash или cmd как дочерний поток.. вроде так... Название: Re: Работа с командной строкой(терминалом) Отправлено: Alex_cs_gsp от Октября 30, 2010, 07:28 С невидимостью я разобрался, со связью с сервером разобраться не сложно, осталось только понять как как отвечать на вопросы, которые может задавать консоль и передавать в качестве переменных сообщения, которые выводит консоль. Вы хотите пользователя написать? Название: Re: Работа с командной строкой(терминалом) Отправлено: Denjs от Октября 30, 2010, 11:34 С невидимостью я разобрался, со связью с сервером разобраться не сложно, осталось только понять как как отвечать на вопросы, которые может задавать консоль и передавать в качестве переменных сообщения, которые выводит консоль. Вы хотите пользователя написать? почему только ssh и telnet ... уж не условия ли курсовой тут проглядывают?))))))) Название: Re: Работа с командной строкой(терминалом) Отправлено: bigory от Октября 30, 2010, 22:40 Denjs, именно что-то типа radmin(а) я и хочу написать)) Спасибо за интересные ссылки, совет, буду разбираться. Если будут вопросы, буду здесь писать
Название: Re: Работа с командной строкой(терминалом) Отправлено: bigory от Ноября 01, 2010, 23:00 Я просмотрел ссылки. Очень было интересно. Но у меня есть одна сложность.
Мне не нужно чтобы запускалась форма, и чтобы она не появлялась я исключаю Код: QApplication a(argc, argv); Пытаюсь отправить команду в командную строку и получить ответ от нее через. В main.cpp не получается. Как правильно это сделать? Выношу сюда пример, который я пытаюсь повторить: Код: #include "myprocess.h" Вот мои наброски: Код: #include "mainwindow.h" Где …. , это я не знаю что дальше делать. Вроде как сигналы в main не работают. Как мне реализовать задуманное? Название: Re: Работа с командной строкой(терминалом) Отправлено: developer от Ноября 02, 2010, 11:54 Я не очень вчитывался в топик. Но я уже делал когда-то подобное. К сожалению только под Юникс.
Эта либа написанная на питоне. http://pexpect.sourceforge.net/pexpect.html. Код можно посмотреть и переписать на с++. Здесь используеться технология псевдотерминалов. А также системные визовы fork(), spawn(). Если найти аналоги под винду то думаю и под віинду переписать тоже можно. Название: Re: Работа с командной строкой(терминалом) Отправлено: Denjs от Ноября 03, 2010, 01:56 Мне не нужно чтобы запускалась форма, и чтобы она не появлялась я исключаю простите - вы a.exec() удаляете из main ?! или что? где?Код: QApplication a(argc, argv); что бы формочка не появлялась - смотрите как писать консольные приложения. без формоем. в моих примерах кажется формочка только у исходного приложения - а у дочернего нет. Вы родительское приложение тоже консольным хотите сделать? |