我在QProcess
使用CMD,但我遇到了问题。
我的代码:
QProcess process;
process.start("cmd.exe");
process.write ("del f:\\b.txt\n\r");
process.waitForFinished();
process.close();
当我没有通过waitForFinished()
的论证时,它会等待30秒。我想在CMD命令执行后终止QProcess
!不多也不少!
答案 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";