I have a HelperTool (installed via SMJobBless). 

The HelperTool does:

NSXPCListener *listener = [[NSXPCListener alloc] initWithMachServiceName: 
bundleId ];
listener.delegate = myNSXPCListenerDelegate;
[listener resume];
NSRunLoop *currentRunLoop = [NSRunLoop currentRunLoop]; 
[ currentRunLoop run ]; 


“Daemons and Services Programming Guide” → “Creating XPC Services” → 
"Understanding the Structure and Behavior" says:
"XPC services are managed by launchd, which launches them on demand, restarts 
them if they crash, 
and terminates them (by sending SIGKILL) when they are idle.”

“launches them on demand” works fine.

But: “terminates them when they are idle”  never happens.

What to do:

(a)     Just trust launchd; it probably has decided that relaunching is more 
costly than keeping the process running.

(b)     launchd has no idea that the HelperTool is idle, because the RunLoop is 
still running. The HelperTool should quit the RunLoop when there are no more 
active NSXPCConnections.

If (b) what should the HelperTool do if it decides there is no more work to do:
(b1) just exit(EXIT_SUCCESS)
(b2) [listener invalidate], followed by exit(EXIT_SUCCESS).

Gerriet.


_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to