QProcess启动进程以及waitForFinished的问题

一、QProcess启动进程

1、启动不带参数进程

QProcess program;
QString cmd = "xxx.exe"; //选择自己要执行exe程序
program.start(cmd);
program.waitForFinished();

2、启动带参数进程

QProcess program;
QString cmd = "xxx.exe";
QStringList args;
args.append("-h");
program.start(cmd, args);
program.waitForFinished();

二、waitForFinished的问题

QProcess中waitForFinished的问题,当我们执行一个超过30s的动作的时候,int msecs = 30000,那么就会直接finish,像遇到解压文件这种情况并且要等finish时候用解压的文件的时候,就会出现问题。
如何解决?
方法1:waitForFinished(-1);  表示一直等待,直到进程结束。比如:

QProcess program;
QString cmd = "xxx.exe";
QStringList args;
args.append("-h");
program.start(cmd, args);
program.waitForFinished(-1);

方法2:循环等待waitForFinished()==true,表示进程结束。比如:

QProcess program;
QString cmd = "xxx.exe";
QStringList args;
args.append("-h");
program.start(cmd, args);
while(!program.waitForFinished())
{
    //等待,进程没有结束
    Sleep(1000);
}

猜你喜欢

转载自blog.csdn.net/byxdaz/article/details/131402934