crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> передача команд в QProcess
borune
  опции профиля:
сообщение 2.6.2014, 8:27
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 152
Регистрация: 1.1.2011
Пользователь №: 2314

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день, камрады,

возник такой вопрос - нужно в программе реализовать вызов терминала xterm, выполнить в нем некоторую команду, затем закрыть терминал, а вывод из терминала обработать потом в программе. Как такое делается, подскажите пожалуйста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 2.6.2014, 14:29
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


borune, ну ты вроде сам уже всё написал - попробуй через QProcess )))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
borune
  опции профиля:
сообщение 2.6.2014, 23:33
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 152
Регистрация: 1.1.2011
Пользователь №: 2314

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Алексей1153 @ 2.6.2014, 15:29) *
borune, ну ты вроде сам уже всё написал - попробуй через QProcess )))

Через QProcess я и делаю - открываю терминал. А дальше как? Писать команду в мой процесс через входной поток? А как имитировать нажатие энтера по окончании ввода?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 3.6.2014, 8:34
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


borune,
если открыть справку по классу, то там можно найти следующее )))

Цитата
void QProcess::setArguments(const QStringList & arguments)
Set the arguments to pass to the called program when starting the process. That function must be call before open()


Цитата
void QProcess::start(const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite)
Starts the given program in a new process, if none is already running, passing the command line arguments in arguments. The OpenMode is set to mode.

The QProcess object will immediately enter the Starting state. If the process starts successfully, QProcess will emit started(); otherwise, error() will be emitted. If the QProcess object is already running a process, a warning may be printed at the console, and the existing process will continue running.

Note: Processes are started asynchronously, which means the started() and error() signals may be delayed. Call waitForStarted() to make sure the process has started (or has failed to start) and those signals have been emitted.

Note: No further splitting of the arguments is performed.

Windows: Arguments that contain spaces are wrapped in quotes.



>>А как имитировать нажатие энтера по окончании ввода?
это не знаю, разве что попробовать писать в поток процесса. Я это не делал, надо разбираться

Сообщение отредактировал Алексей1153 - 3.6.2014, 8:35
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 4.6.2014, 13:49
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(borune @ 2.6.2014, 10:27) *
вызов терминала xterm, выполнить в нем некоторую команду, затем закрыть терминал, а вывод из терминала обработать потом в программе.
ошибка в рассуждении. Неправильные места выделены жирным. тебе ненужен терминал, тебе нужна программа, которую человек выполнял бы в терминале. вывод из терминала в принципе не существует, терминал печатает вывод у себя некой программы, вот его и бери.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 22:46