怎样判断startDetached启动的exe执行完毕
时间: 2024-03-03 14:53:29 浏览: 51
使用startDetached()函数启动的进程,是在后台运行的,QProcess类并不能直接判断该进程是否执行完毕。不过,我们可以在启动该进程时,将进程的PID(进程标识符)保存下来,然后通过QProcess类的静态函数waitForFinished(pid)来判断该进程是否执行完毕。
以下是一个示例代码:
```c++
QString program = "your_exe_file.exe";
QStringList arguments;
int pid = QProcess::startDetached(program, arguments);
// 等待进程执行完毕
if (QProcess::waitForFinished(pid)) {
// 进程执行成功
} else {
// 进程执行失败
}
```
上述代码中,我们使用startDetached()函数启动进程,并将返回的PID保存在pid变量中。然后,使用QProcess的静态函数waitForFinished(pid)来等待该进程执行完毕。如果返回true,则表示进程执行成功;否则表示进程执行失败。
需要注意的是,waitForFinished()函数会阻塞当前线程,直到进程执行完毕为止。如果在UI线程中调用该函数,可能会导致UI界面卡死,因此建议在子线程中调用该函数。
相关问题
Qt MAC下用startDetached启动应用程序
在Mac OS X下使用QProcess的startDetached()函数启动应用程序,可以使用如下代码:
```cpp
#include <QApplication>
#include <QProcess>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QProcess::startDetached("/Applications/TextEdit.app"); // 启动TextEdit应用程序
return a.exec();
}
```
在上面的代码中,我们使用QProcess的startDetached()函数启动TextEdit应用程序。startDetached()函数将返回一个bool值,表示应用程序是否成功启动。如果启动成功,TextEdit应用程序将在后台运行。注意,路径应该改为您想要启动的应用程序的路径。
startDetached启动程序,怎么获取程序的pid
可以使用QProcess类中的processId()函数获取启动程序的pid,示例代码如下:
```c++
QProcess process;
process.startDetached("program.exe");
qDebug() << "Program PID: " << process.processId();
```