Как запустить Shell Script с QProcess? - PullRequest
4 голосов
/ 01 февраля 2012

Как я могу запустить Shell Script, используя QProcess? В сценарии оболочки есть восемь различных команд, некоторые с аргументами, другие без.

Я пытался запустить Shell Script (используя Ubuntu 11.10):

QProcess *Prozess = new QProcess();
Prozess->setWorkingDirectory(MainDirectory);
Prozess->start("/bin/sh", QStringList() << "Shell.sh");

Но это не работает, это означает, что ничего не происходит. Как заставить это работать?

Ответы [ 3 ]

4 голосов
/ 01 февраля 2012

Код в порядке. Проблема во время выполнения.

Либо ваша программа по какой-то причине не может запустить /bin/sh (проверить, можно ли вместо этого запустить gedit?), Либо переменная MainDirectory имеет неправильный путь к каталогу (отладить его), либо Shell.sh делает не существует в этом каталоге (ошибки в заглавных буквах? Как насчет "./Shell.sh"?) или у вас недостаточно прав для запуска или изменения целевого каталога / файлов (они принадлежат вам?).

1 голос
/ 01 февраля 2012

Процесс, который вы запустили, работает в фоновом режиме. если вы хотите увидеть какой-либо явный вывод из запущенного скрипта, вам нужно подключиться к void readyReadStandardOutput() или / и void readyReadStandardError() и явно прочитать из процесса. Например:

void onReadyRead() {

   QByteArray processOutput = Prozess->readAllStandardOutput();
}
0 голосов
/ 17 мая 2013

Это должно работать:

QProcess::ProcessError Error = myProcess->readAllStandardError();
return Error;
...