launchd continua a riavviare il mio binario in / Library / PrivilegedHelperTools

2

Sto cercando di installare uno strumento di supporto privilegiato usando SMJobBless . < br> Il mio plist contiene solo la chiave MachServices e la chiave RunAtLoad . RunAtLoad è impostato su true perché voglio essere avviato automaticamente dopo l'installazione.

Ora, il problema è che una volta installato e avviato lo strumento di supporto che completa con successo il suo lavoro, viene riavviato e continua a ripetersi.

Biglietto di lavoro launchd originale

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  
<plist version="1.0">  
<key>Label</key>  
<string>com.ak.SMJobBlessHelper</string>  
<key>MachServices</key>  
<dict>  
<key>com.ak.SMJobBlessHelper.mach</key>  
<true/>  
</dict>  
<key>ProgramArguments</key>  
<array>  
<string>/Library/PrivilegedHelperTools/com.ak.SMJobBlessHelper</string>  
</array>  
<key>RunAtLoad</key>  
<true/>  
</plist>

Ho provato varie cose per impedirgli di lanciare di nuovo, ma invano:

  1. Si è tentato di aggiungere KeepAlive a false nel plist.
  2. Si è tentato di aggiungere KeepAlive come dizionario con la chiave SuccessfulExit su false.
  3. Ho provato a far dormire la mia app per ore occulte prima di smettere di dormire per 5 minuti, 10 minuti ecc., ma viene comunque riavviata.

Ho praticamente esaurito le idee, voglio che venga lanciato solo quando chiedo e non automaticamente e anche più e ancora.

Per favore aiuto. Grazie mille.

SO: Mac OS X 10.8.4 12E55
Xcode: 4.6.2 (4H1003)

    
posta dDarkLORD 21.10.2013 - 08:47
fonte

1 risposta

1

Il ticket di lavoro launchd nella domanda non è corretto; l'oggetto radice deve essere un dict :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   ...
</dict>
</plist>

Supponendo che si tratti di un errore di copia e incolla, quanto velocemente il com.ak.SMJobBlessHelper è completo?

Alcune configurazioni di launchd richiedono che il processo rimanga in esecuzione per almeno 30 secondi, altrimenti launchd considererà il processo come bloccato e lo riavvierà automaticamente.

Il tuo com.ak.SMJobBlessHelper è conforme ai requisiti definiti in documentazione di launchd ?

    
risposta data 20.03.2014 - 14:04
fonte

Leggi altre domande sui tag