Ich versuche ein Shell-Skript über eine Qt-GUI aufzurufen, aber nach dem Ausführen des Skripts bleibt die bash-Sitzung geöffnet, wenn sie fertig sein soll.Qt QProcess startDetached kann den Prozess nicht beenden (bash session)
diesen Code zu haben:
QString s = "./script.sh " + argument;
qint64 *pid = NULL;
QProcess process;
process.startDetached("/bin/bash", QStringList() << "-c" << s, NULL, pid);
bool finished = process.waitForFinished(-1);
std::cout << "ended";
So, nachdem das Skript ausgeführt wird, wird ein Befehl erwartet eingegeben werden, kann ich jeden Befehl setzen und es wird sie auszuführen. Das Problem ist, dass es nie endet, bis ich einen Befehl eingegeben habe.
Ich habe auch versucht die s
Variable wie folgt ändern:
QString s = "./script.sh " + argument + " ;exit";
der Hoffnung, dass es die Bash-Sitzung enden würde, aber nichts passiert.
Wenn ich anstelle der Funktion startDetached
start
verwende, wird die Bash-Sitzung ohne den Befehl ;exit
geschlossen.
Hoffe, dass jemand weiß, wie man es oder ein Workaround löst!
Was ist das Skript und das Argument? Alternativ können Sie dies mit einem Standardbefehl reproduzieren, zB 'bash -c" echo done "'? –
Ein Standard-Befehl wird das gewünschte Verhalten reproduzieren. Das Skript hat 2 Befehle und dann ein 'exit 0', um das Skript zu beenden. Die Befehle werden korrekt ausgeführt. – lpares12