2016-04-24 9 views
-1

Ich mag das Programm überprüfen, ob das Skript bereits begonnen, und wenn nicht - dann starten (in Klemme und als root)Wie starte ich ein Bash-Skript im Terminal vom QT-Programm?

Thank you! ;-)

QProcess *proc = new QProcess(); 
    proc->setWorkingDirectory("/home/user/Documents/"); 
    proc->start("/home/user/Documents/script.sh"); 

    delete proc; 
+0

Willkommen bei SO, bitte zeigen Sie Ihre Codierung Bemühungen, SO ist kein Code-Schreiben-Service. – Cyrus

Antwort

2

QProcess läuft das externe Skript asynchron, also durch

proc->start(...); 
delete proc; 

tun Sie es töten, sobald es beginnt (oder vielleicht sogar vor). Versuchen Sie, waitForFinished() vor dem Löschen hinzuzufügen.

proc->start(...); 
proc->waitForFinished(); 
delete proc; 
+0

Danke! Aber wie überprüft man, ob das Skript bereits läuft? – user3027198

+0

und ist es notwendig, "proc" zu löschen, auch wenn ich den Befehl ** exit ** am Ende meines Skripts habe? – user3027198

+1

Startet nur Ihr Programm das Skript? Wenn ja, wird Ihnen die state() - Funktion von QProcess mitteilen, ob sie läuft oder nicht. Und ja, Sie müssen den QProcess löschen, sobald er fertig ist. Wenn das Skript beendet wird, enthält der QProcess immer noch die von ihm verwendeten Ein- und Ausgabestreams und jeden anderen Zustand, den er enthält, bis er gelöscht wird. Das ist eine gute Sache, sonst könnte man nicht einmal auf die Daten zugreifen, die es ausgegeben hat. – David