QProcess inicia el proceso y el problema de waitForFinished

1. QProcess inicia el proceso

1. Iniciar el proceso sin parámetros

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

2. Iniciar el proceso con parámetros

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

2. El problema de waitForFinished

El problema de waitForFinished en QProcess, cuando ejecutamos una acción que excede los 30s, int msegs = 30000, entonces se terminará directamente, como encontrarse con la situación de descomprimir archivos y esperar a que finalice Al usar el archivo descomprimido, aparecerá un problema .
¿Cómo resolver?
Método 1: waitForFinished(-1); significa esperar hasta que finalice el proceso. Por ejemplo:

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

Método 2: esperar circularmente a waitForFinished()==true, lo que indica el final del proceso. Por ejemplo:

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

Supongo que te gusta

Origin blog.csdn.net/byxdaz/article/details/131402934
Recomendado
Clasificación