Ich möchte den Computer neu starten, indem Sie einen Befehl in Linux mit QProcess
ausführen. Ich habe mein Root-Passwort in meiner Anwendung fest programmiert.Wie führe ich komplexe Linux Befehle in Qt aus?
Wenn ich die folgenden in einem Terminal ausführen es funktioniert perfekt:
echo myPass | sudo -S shutdown -r now
Wenn ich in ein Shell-Skript den Befehl setzen und rufen es über QProcess
es ist auch erfolgreich:
QProcess process;
process.startDetached("/bin/sh", QStringList()<< "myScript.sh");
Aber ich kann es nicht direkt vorbei an QProcess
laufen:
process.startDetached("echo myPass | sudo -S shutdown -r now ");
Es wird nur gedruckt myPass | sudo -S shutdown -r now
Wie ist es möglich, solche relativ komplexe Befehle direkt mit QProcess
auszuführen. (Kein Shell-Skript einfügen).
Das funktioniert gut und ich mag es, weil es allgemeiner und mehr in Qt-Art ist. Ich weiß nicht, wofür das ist: process2.setProcessChannelMode (QProcess :: ForwardedChannels); – Nejat
@Nejat: Ja, es könnte ohne das funktionieren, aber beim letzten Mal hatte ich Probleme, wenn ich das nicht hatte. Der Zweck ist es, die Ausgabe des Kindprozesses an den Hauptprozess umzuleiten, also, ja, das kann für Ihren Fall unnötig sein. – lpapp