Qt - 等待Qprocess完成

时间:2014-07-31 14:45:53

标签: qt command-prompt qprocess

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

我的代码:

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

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

2 个答案:

答案 0 :(得分:7)

您需要通过发送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();

答案 1 :(得分:4)

您正在启动的进程是cmd.exe,它本身不会终止。如果你用参数调用cmd,你应该达到你想要的效果: -

QProcess process;
process.start("cmd.exe \"del f:\\b.txt"\"");
process.waitForFinished();
process.close();

请注意,参数是用引号转义的。

或者,您可以调用del进程,而不使用cmd: -

QProcess process;
process.start("del \"f:\\b.txt"\"");
process.waitForFinished();
process.close();

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

QFile file("f:\\b.txt");
if(file.remove())
    qDebug() << "File removed successfully";