2016-12-02 3 views
0

Ich starte eine A-Jar-Anwendung von Apple-Skript.Wie mehrere Shell-Skripts von AppleScript im Hintergrund ausgeführt werden

Das Skript läuft weiter, bis ich meine Jar-Anwendung beendet habe.

Aber ich bin aufgefordert, ein anderes Anwendungsformular Shell-Skript zu starten.

Da ich dies in einer Cocoa App mache, möchte ich dies im Hintergrund tun.

So kann ich mehrere Skripts in mehreren Instanzen des Terminals starten (damit sie sich nicht gegenseitig blockieren).

Hinweis: Ich habe es getestet, indem ich den Befehl in zwei verschiedenen Terminalfenstern ausgeführt habe, funktioniert wie erwartet.

+0

wenn Sie nicht Ende warten wollen ‚tun Blatt Skript‘ Befehl, müssen Sie woanders seinen Ausgang umleiten, um eine Datei oder nirgendwo. Wenn Sie beispielsweise ' pbell

+0

@pbell Ich bin auf die Lösung gestoßen und habe sie als Backup. Aber die Idee ist, zwei Hintergrundprozesse zu starten. Dies ermöglicht es mir, einen Rückruf zu meiner Kakao-App zu erhalten, wenn das Glas verlassen wird. –

Antwort

1

Siehe Technical Note TN2065, speziell die Antworten auf die Fragen "Ich möchte einen Hintergrund-Server-Prozess zu starten; Wie mache ich Shell-Skript nicht warten, bis der Befehl abgeschlossen ist?" und "Ich habe einen Hintergrundprozess gestartet; wie bekomme ich seine Prozess-ID, damit ich sie mit anderen Shell-Befehlen steuern kann?".

Der Applescript-Code zwei Befehle im Hintergrund laufen würde wie folgt aussehen:

set pid1 to do shell script command1 & " &> /dev/null & echo $!" 
set pid2 to do shell script command2 & " &> /dev/null & echo $!" 

Die PID1 und PID2 Variablen werden den Prozess-IDs der beiden Befehle eingestellt werden. Sie können später prüfen, ob die Befehle noch ausgeführt werden, eine Funktion wie dieser Aufruf:

on isProcessRunning(pid) 
    try 
     do shell script "kill -0 " & pid 
     set isRunning to true 
    on error 
     set isRunning to false 
    end try 
    return isRunning 
end isProcessRunning 
Verwandte Themen