Название: QProcess + STDIN/STDOUT Отправлено: Majestio от Ноябрь 29, 2013, 13:56 Вопрос №1: нужно запустить процесс, предварительно записав ему в STDIN некоторые данные, получить из его STDOUT результат, ну и использовать их в своей программе. Накидал частично работающий код, дальше тупичек. Нужна ваша помощь.
Слот из программы, пока просто вызывается кликом педали на форме: Код: void MainWindow::SlotRun() Данный код вызывает, как пример, StartHidden.cmd: Код
Естественно, если я sort не закомментирую - вызов зависает. А мне нужно чтобы sort отсортировал переданные ему строки. Вопрос №2: Код: QTextCodec *Cp866 = QTextCodec::codecForName("IBM 866"); Название: Re: QProcess + STDIN/STDOUT Отправлено: VPS от Ноябрь 29, 2013, 14:58 Что Вы пытаетеь отсортировать командой sort в cmd файле?
Если хотите отсортировать вывод команды ping, то попробуйте вот так: Код: ping 192.168.1.2 | sort Название: Re: QProcess + STDIN/STDOUT Отправлено: Majestio от Ноябрь 29, 2013, 15:07 Что Вы пытаетеь отсортировать командой sort в cmd файле? Если хотите отсортировать вывод команды ping, то попробуйте вот так: Код: ping 192.168.1.2 | sort Нет, это просто первый пример, который пришел на ум - команда sort, которая умеет сортировать то, что ей приходит на STDIN. На счет пайпов, я в курсе. А в приведенном примере должно отработать так: 1) Выводятся отсортированные строки, переданные мною из Qt-программы 2) За ними выводится результат работы пинг 3) Выводится аргумент, переданный cmd-файлу Понимаю, бессмыслица, но это только для примера. Название: Re: QProcess + STDIN/STDOUT Отправлено: VPS от Ноябрь 29, 2013, 16:51 А в приведенном примере должно отработать так: 1) Выводятся отсортированные строки, переданные мною из Qt-программы 2) За ними выводится результат работы пинг 3) Выводится аргумент, переданный cmd-файлу Понимаю, бессмыслица, но это только для примера. Попробуйте так: Код: QProcess proc; Название: Re: QProcess + STDIN/STDOUT Отправлено: Majestio от Ноябрь 29, 2013, 18:06 Спасибо - то, что надо! Только .toAscii метод не нашелся, но сработал следующий код:
Код: void MainWindow::SlotRun() Вопрос закрыт :) |