我正在使用下面的代码开始一个进程
QProcess* process = new QProcess();
process->start(Path);
start 方法将启动第三方应用程序。
如果进程已经在运行,我不应该再次调用 process->start(Path) 。
进程指针是类的私有成员。
我正在使用下面的代码开始一个进程
QProcess* process = new QProcess();
process->start(Path);
start 方法将启动第三方应用程序。
如果进程已经在运行,我不应该再次调用 process->start(Path) 。
进程指针是类的私有成员。
从QProcess 的文档...
至少有 3 种方法可以检查 QProcess 实例是否正在运行。
QProcess.pid():如果它正在运行,则 pid 将 > 0
QProcess.state():再次检查ProcessState枚举以查看其 QProcess::NotRunning
QProcess.atEnd():如果这是真的,它不会运行
如果其中任何一个都没有按您的预期工作,那么您将需要发布该示例的特定案例。
用一个真实的代码示例来补充@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.
文档在这里。