At 22:02 +0100 29/3/08, Mike Fischer wrote:
BTW: The launchd.plist(5) man page contains references to a launch(3) man page (10.5.2, Xcode 3.0 as well as 10.4.11, Xcode 2.4.1). Unfortunatly the launch(3) man page does not seem to exist. Filed as <rdar://5830171>. I saw /usr/include/launch.h and the SampleD sample code but these don't really explain what is going on and how to properly check-in with launchd. Any hints on where to get more information?
Thanks for all those bug reports. We appreciate 'em. IMHO the best example of how to use launchd with a UNIX domain socket is: <http://developer.apple.com/samplecode/BetterAuthorizationSample/index.html>
If I understand this correctly I would not be using the socket for actual communication, just for triggering the launch of the "server", i.e. the real (on demand) daemon?
That's the idea, yes.
Would I need to add the SockFamily or SockProtocol keys and if so what would be the correct values for a UNIX domain socket? Anything else I'd need to add?
o SockFamily == Unix o SockPathMode is typically 438 (0666, rw-rw-rw-) -- This may not strictly be necessary in your case because the code that's connecting is privileged. o SockNodeName == ??? -- It's generally best to put this in a privileged location (/var/run/) rather than in /tmp.
In the real daemon I'd do a socket(2), bind(2), accept(2) (the listen(2) is already done by launchd I gather)? Or do I need this at all?
In a launchd daemon you don't need to do the socket, or the bind, or the listen. You just get a file descriptor for the socket from launchd (using LAUNCH_KEY_CHECKIN) and accept connections from that. S+E -- Quinn "The Eskimo!" <http://www.apple.com/developer/> Apple Developer Relations, Developer Technical Support, Core OS/Hardware