2016-04-24 40 views
-1

私はスクリプトがすでに開始している場合、プログラムがチェックしたいとそうでない場合 - その後、(ターミナルにし、ルートとして)それを開始QTプログラムからターミナルでbashスクリプトを起動する方法は?

ありがとうございました! ;-)それが起動すると

QProcess *proc = new QProcess(); 
    proc->setWorkingDirectory("/home/user/Documents/"); 
    proc->start("/home/user/Documents/script.sh"); 

    delete proc; 
+0

ようこそ、あなたのコーディング努力を示してください、SOはコードを書くサービスではありません。 – Cyrus

答えて

2

QProcessはできるだけ早くあなたがそれを殺す

proc->start(...); 
delete proc; 

を行うことによってので、asyncronously外部スクリプトを実行します(または多分前)。削除の前にwaitForFinished()を追加してみてください。

proc->start(...); 
proc->waitForFinished(); 
delete proc; 
+0

ありがとう!しかし、スクリプトが既に実行されているかどうかをチェックする方法は? – user3027198

+0

スクリプトの最後に** exit **コマンドがあっても 'proc'を削除する必要がありますか? – user3027198

+1

スクリプトを起動するのはあなたのプログラムだけですか?そうであれば、QProcessのstate()関数は、実行中かどうかを通知します。そして、QProcessが終了したらそれを削除する必要があります。スクリプトが終了すると、QProcessには使用された入出力ストリームとそれが削除されるまで保持されるその他の状態が含まれます。これは良いことです。さもなければ、スクリプトが終了すると、出力されたデータにアクセスできなくなりました。 – David

関連する問題