Qt – Warten Sie, bis Qprocess abgeschlossen ist
-
22-12-2019 - |
Frage
Ich verwende CMD von QProcess
aber ich habe ein Problem.
Mein Code:
QProcess process;
process.start("cmd.exe");
process.write ("del f:\\b.txt\n\r");
process.waitForFinished();
process.close();
Wenn ich kein Argument dafür gebe waitForFinished()
es wartet 30 Sekunden.Ich möchte kündigen QProcess
nachdem der CMD-Befehl ausgeführt wurde!Nicht viel und nicht weniger!
Lösung
Sie müssen die cmd.exe durch Senden beenden exit
Befehl, sonst wartet es auf Befehle hier ist mein Vorschlag:
QProcess process;
process.start("cmd.exe");
process.write ("del f:\\b.txt\n\r");
process.write ("exit\n\r");
process.waitForFinished();
process.close();
Andere Tipps
Der Prozess, den Sie starten, ist cmd.exe, der selbst nicht beendet wird.Wenn Sie cmd mit Argumenten aufrufen, sollten Sie das erreichen, was Sie wollen:-
QProcess process;
process.start("cmd.exe \"del f:\\b.txt"\"");
process.waitForFinished();
process.close();
Beachten Sie, dass die Argumente in Anführungszeichen gesetzt werden.
Alternativ können Sie den Del-Prozess ohne cmd aufrufen:-
QProcess process;
process.start("del \"f:\\b.txt"\"");
process.waitForFinished();
process.close();
Wenn Sie schließlich nur eine Datei löschen möchten, können Sie die verwenden QFile::remove Funktion.
QFile file("f:\\b.txt");
if(file.remove())
qDebug() << "File removed successfully";