Qt - 等待Qprocess完成

Moh*_*ani 6 qt command-prompt qprocess

我正在使用CMD,QProcess但我遇到了问题.

我的代码:

QProcess process;
process.start("cmd.exe");
process.write ("del f:\\b.txt\n\r");
process.waitForFinished();
process.close();
Run Code Online (Sandbox Code Playgroud)

当我没有通过争论时,waitForFinished()等待30秒.我想QProcess在执行CMD命令后终止!不多也不少!

ahm*_*med 9

您需要通过发送exit命令终止cmd.exe ,否则它将等待命令这是我的建议:

QProcess process;
process.start("cmd.exe");
process.write ("del f:\\b.txt\n\r");
process.write ("exit\n\r");
process.waitForFinished();
process.close();
Run Code Online (Sandbox Code Playgroud)


The*_*ght 5

您正在启动的进程是cmd.exe,它本身不会终止。如果使用参数调用cmd,则应实现所需的功能:-

QProcess process;
process.start("cmd.exe \"del f:\\b.txt"\"");
process.waitForFinished();
process.close();
Run Code Online (Sandbox Code Playgroud)

注意,参数用引号引起来。

或者,您可以调用不带cmd的del进程:-

QProcess process;
process.start("del \"f:\\b.txt"\"");
process.waitForFinished();
process.close();
Run Code Online (Sandbox Code Playgroud)

最后,如果您只想删除文件,则可以使用QFile :: remove函数。

QFile file("f:\\b.txt");
if(file.remove())
    qDebug() << "File removed successfully";
Run Code Online (Sandbox Code Playgroud)

  • @MohammadRezaRamezani与Merlin069相同的建议。创建一个批处理,将其作为答案显示。 (2认同)