Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何检查进程是否正在运行_Qt - Fatal编程技术网

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

Qt 如何检查进程是否正在运行,qt,Qt,我正在使用下面的代码启动一个进程 QProcess* process = new QProcess(); process->start(Path); start方法将启动第三方应用程序 如果进程已经在运行,我不应该再次调用process->start(Path) 进程指针是类的私有成员。来自… 至少有3种方法可以检查QProcess实例是否正在运行 :如果正在运行,pid将>0 :再次检查枚举以查看其QProcess::NotRunning是否正在运行 :如果这是真的,则它不会运行

我正在使用下面的代码启动一个进程

 QProcess* process = new QProcess();
 process->start(Path);
start方法将启动第三方应用程序

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

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

来自…

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

:如果正在运行,pid将>0

:再次检查枚举以查看其QProcess::NotRunning是否正在运行

:如果这是真的,则它不会运行

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

用一个真实的代码示例来补充作者的答案:

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.

文档是。

您看过文档了吗?至少有3种不同的方法可以知道QProcess是否正在运行。@jdi-我尝试了QProcess函数,但总是测试为未运行。请注意上面的语法。通过手动调用它来确保它正在破坏,或者执行
QProcess*process=newqprocess(此操作)QObject
,则改为code>。感谢jdi,我认为我实现错误,直接使用进程指针检查了NotRunning枚举。我会再试一次。@ TimeRunt:我不是C++的人,只是好奇…如果进程是私有成员,并且您执行
QProcess*process=new QProcess(),是不是每次都用一个本地作用域版本来隐藏它?你是对的,@jdi--这在处理多个进程时一直很麻烦。当对照这些检查中的任何一项检查一个指向新进程的列表时,您将得到误报。