如何检查进程是否正在运行

时间:2012-05-02 21:42:09

标签: qt

我正在使用以下代码开始一个过程

 QProcess* process = new QProcess();
 process->start(Path);

start方法将启动第三方应用程序。

如果进程已在运行,我不应该再次调用process-> start(Path)。

进程指针是类的私有成员。

2 个答案:

答案 0 :(得分:6)

来自docs for QProcess ...

至少有3种方法可以检查QProcess实例是否正在运行。

QProcess.pid():如果正在运行,则pid将为> 0

QProcess.state():再次检查ProcessState枚举,查看其QProcess :: NotRunning

QProcess.atEnd():如果这是真的,它就不会运行

如果其中任何一个没有按预期工作,那么您需要发布该示例的特定案例。

答案 1 :(得分:1)

使用现实生活中的代码示例来补充@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.

文档为here