2016-08-22 4 views
1

Ich erstelle ein Applescript, das auf zwei Prozesse warten sollte, um zu beenden und dann etwas Logik auszuführen. Die erste ist eine Anwendung, auf die man leicht warten kann.Warte auf Hintergrundprozess

set program to "Applications/xyz.app" 

repeat until (application program is not running) 
    delay 1 
end repeat 

Jetzt für meine Hintergrundaufgabe, die nicht funktioniert, da es eine direkt ausführbare Datei ist nicht eine Anwendung. Wenn es hilft, ist der Prozess aria2. Kann mir jemand sagen, wie das funktioniert, oder mich in die richtige Richtung lenken, um eine Antwort zu finden?

Antwort

1

Versuchen pgrep für die Prozess-ID eines Prozesses suchen mit aria2 wie folgt aufgerufen:

do shell script "/usr/bin/pgrep aria2" 

Ich habe aria2 nicht so bin zu raten, ich Namen seines Prozesses - nur versuchen, es im Terminal zuerst sehen, ob es funktioniert:

pgrep aria2 

Es wird keine Ausgabe geben, wenn es nicht läuft.

um vollere Ausgabe zu sehen, laufen:

Wenn Sie es in einer Schleife überprüfen möchten, können Sie diese Art der Sache tun könnte:

set ariarunning to 0 
repeat until ariarunning > 0 
    try 
     set ariarunning to do shell script "/usr/bin/pgrep aria" 
    end try 
    delay 1 
end repeat 
+0

Danke das funktioniert! Wenn es Ihnen nichts ausmacht Follow-up Frage: Wie vergleiche ich den Return-Code? 'repeat to ((do shell script)/usr/bin/pgrep aria2c) =" ")' Verzögerungen bis zum Schließen des Programms, aber dann Rückkehr mit einem Skriptfehler "Der Befehl wurde mit einem Nicht-Null-Status beendet" – Torbilicious