Stoppen Sie launchd Aufgabe Wenn App geöffnet
Frage
Ich frage mich, ob es irgendeine Art, wie ich eine launchd Aufgabe stoppen kann, wenn eine Anwendung geöffnet ist, und es dann wieder gestartet werden, wenn die Anwendung geschlossen wird. Meine launchd Aufgabe wird benachrichtigt werden, wenn eine Datei geändert wird, und dann tut einig UNIX-Code mit der Datei. Allerdings macht meine Anwendung viele Änderungen an diese Datei, damit ich nicht die Aufgabe ausgeführt haben kann, wenn mein app geöffnet ist (sonst wird es den UNIX-Code jedes Mal ausgeführt, dass die Datei geändert wird, was nicht gut ist). Gibt es Vor-und Nachteile der verschiedenen Methoden, dies zu tun (obwohl ich habe keine Methoden gefunden)?
Vielen Dank für jede Hilfe.
Lösung
Sie könnten Applescript verwenden, um zu überprüfen und festzustellen, ob eine App ausgeführt wird.
ich diesen Beitrag gefunden, dass ein Apple beschreibt, die eine Anwendung der An- und Abfahren überwacht: http: //macosx.com/forums/1199085-post2.html
global wasLoaded
on run
set wasLoaded to isAppLoaded("Safari")
idle
end run
on idle
set x to isAppLoaded("Safari")
if x and not wasLoaded then
do shell script "SOME BASH COMMAND" -- stop your launchd task
set wasLoaded to true
else if wasLoaded and not x then
do shell script "SOME BASH COMMAND" -- start your launchd task
set wasLoaded to false
end if
return 1 --will wait 1 second before checking again
end idle
on isAppLoaded(app_name)
tell application "System Events"
set app_list to every application process whose name contains app_name
if the (count of app_list) > 0 then
return true
else
return false
end if
end tell
end isAppLoaded
Ich bin sicher, dass ein versierter bash
scripter Sie einen Weg erkennen konnte durch Parsen der Ausgabe von top
das Gleiche zu tun.
Andere Tipps
Wenn Sie etwas Zeit mitbringen, können Sie launchd eigene API versuchen, die in /usr/include/launch.h ist. Schauen Sie sich die Implementierung von launchd_stop_job
in launchctl CPP .
Bitte beachten Sie die launchd.plist Manpage für die Keep-Alive und PathState Keywords.