agente di lancio su richiesta che si riavvia automaticamente

0

Come dice il titolo, ho creato un agente di avvio on-demand che ascolta socket e viene avviato alla connessione in ingresso. Funziona bene e dopo che ha fatto il suo lavoro, voglio uscirne. Dopo aver chiuso il sistema automaticamente lo riavvia, il sistema operativo probabilmente pensa che sia morto per errore. Come posso fermare questo comportamento? Il mio launch agent è un'applicazione Cocoa (senza GUI), ho provato a uscire con 'exit (EXIT_SUCCESS)' e '[[NSApplication sharedApplication] termina: self]'

Il mio launchd plist è qui sotto:

<?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">
<dict>
<key>Label</key>
<string>com.mycompany.mylaunchagent</string>
<key>ProgramArguments</key>
<array>
    <string>/Library/Application Support/com.mycompany.myproduct/myproduct.app/Contents/MacOS/myproduct</string>
</array>
<key>ServiceIPC</key>
<true/>
<key>KeepAlive</key>
<false/>
<key>Sockets</key>
<dict>
    <key>MyListenerSocket</key>
    <dict>
        <key>SockServiceName</key>
        <string>12040</string>
    </dict>
</dict>

    
posta superg 03.07.2013 - 12:07
fonte

1 risposta

1

Probabilmente non ti sarà d'aiuto, ma potresti provare a dormire per qualche secondo prima di uscire. Da Guida alla programmazione di Daemon e servizi :

Important: If your daemon shuts down too quickly after being launched, launchd may think it has crashed. Daemons that continue this behavior may be suspended and not launched again when future requests arrive. To avoid this behavior, do not shut down for at least 10 seconds after launch.

    
risposta data 03.07.2013 - 12:53
fonte

Leggi altre domande sui tag