6

QProcessを使用してシェルスクリプトを開始するにはどうすればよいですか?シェルスクリプトには8つの異なるコマンドがあり、引数があるものとないものがあります。

(Ubuntu 11.10を使用して)シェルスクリプトを開始しようとしました:

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

しかし、これは機能しません。つまり、何も起こりません。それを機能させる方法は?

4

4 に答える 4

5

コードは問題ありません。問題は実行時にあります。

プログラムが/bin/sh何らかの理由で実行できない(gedit代わりに実行できるかどうかをテストしますか?)か、MainDirectory変数のディレクトリパスが間違っている(デバッグする)か、Shell.shそのディレクトリにが存在しない(大文字と小文字の間違い? "./ Shellはどうですか?) .sh "?)、またはターゲットディレクトリ/ファイルを実行または変更するための十分な権限がありません(それらはあなたが所有していますか?)。

于 2012-02-01T06:40:55.693 に答える
2

開始したプロセスはバックグラウンドで実行されています。実行中のスクリプトからの明示的な出力を確認したい場合は、void readyReadStandardOutput()または/およびに接続しvoid readyReadStandardError()て、プロセスから明示的に読み取る必要があります。例えば:

void onReadyRead() {

   QByteArray processOutput = Prozess->readAllStandardOutput();
}
于 2012-01-31T22:17:46.863 に答える
0

これは機能するはずです:

QProcess::ProcessError Error = myProcess->readAllStandardError();
return Error;
于 2013-05-17T06:21:14.057 に答える
0
QProcess ().execute ("/bin/sh " + MainDirectory + "/Shell.sh");

仕事をします。

于 2021-10-16T15:49:12.790 に答える