以下のコードを使用してプロセスを開始しています
QProcess* process = new QProcess();
process->start(Path);
start メソッドは、サードパーティのアプリケーションを開始します。
プロセスが既に実行されている場合は、もう一度 process->start(Path) を呼び出すべきではありません。
プロセス ポインターは、クラスのプライベート メンバーです。
以下のコードを使用してプロセスを開始しています
QProcess* process = new QProcess();
process->start(Path);
start メソッドは、サードパーティのアプリケーションを開始します。
プロセスが既に実行されている場合は、もう一度 process->start(Path) を呼び出すべきではありません。
プロセス ポインターは、クラスのプライベート メンバーです。
QProcessのドキュメントから...
QProcessインスタンスが実行されているかどうかを確認するには、少なくとも3つの方法があります。
QProcess.pid():実行中の場合、pidは>0になります
QProcess.state():ProcessState列挙型をもう一度チェックして、QProcess::NotRunningかどうかを確認します
QProcess.atEnd():これがtrueの場合は実行されません
これらのいずれかが期待どおりに機能しない場合は、その例の特定のケースを投稿する必要があります。
@jdiの回答を実際のコード例で補完するには:
QString executable = "C:/Program Files/tool.exe";
QProcess *process = new QProcess(this);
process->start(executable, QStringList());
// some code
if ( process->state() == QProcess::NotRunning ) {
// do something
};
QProcess::ProcessState
定数は次のとおりです。
Constant Value Description
QProcess::NotRunning 0 The process is not running.
QProcess::Starting 1 The process is starting, but the program has not yet been invoked.
QProcess::Running 2 The process is running and is ready for reading and writing.
ドキュメントはこちらです。