Domanda

Mi chiedo se esiste un modo per interrompere un'attività di avvio quando un'applicazione è aperta, quindi riavviarla quando l'applicazione viene chiusa. La mia attività di avvio è impostata per essere notificata quando un file viene modificato e quindi eseguire un codice UNIX con il file. Tuttavia, la mia applicazione apporta molte modifiche a questo file, quindi non posso avere l'attività in esecuzione quando la mia app è aperta (altrimenti eseguirà il codice UNIX ogni volta che il file viene modificato, il che non va bene). Esistono vantaggi e svantaggi dei diversi metodi per farlo (anche se non ho trovato alcun metodo)?

Grazie per l'aiuto.

È stato utile?

Soluzione

Potresti usare applecript per verificare e vedere se un'app è in esecuzione.

Ho trovato questo post che descrive uno script di apple che monitorerà l'avvio e l'arresto di un'applicazione: 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

Sono sicuro che uno scripter bash esperto potrebbe dirti un modo per fare la stessa cosa analizzando l'output da top .

Documentazione Apple per esegui script shell

Altri suggerimenti

Se ti senti avventuroso, potresti provare l'API di launchd, che si trova in /usr/include/launch.h. Controlla l'implementazione di launchd_stop_job in launchctl.cpp .

Consultare la pagina man launchd.plist per le parole chiave KeepAlive e PathState.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top