Hello everyone. I'm trying to get launchd working for a TCP daemon using the "Sockets" plist entry.
Unfortunately the launch interface isn't well undocumented (the lack of the launch(3) manpage referred to by launchd.plist(5)), but from reading launch.h for the API and launchproxy.c and portmap.c for an example, I was able to determine that the correct course of events goes as follows:
launch_data_alloc(LAUNCH_DATA_STRING); launch_data_set_string(msg, LAUNCH_KEY_CHECKIN); resp = launch_msg(msg)
launch_data_dict_lookup(resp, LAUNCH_JOBKEY_SOCKETS); ...
Unfortunately I can't get this working -- response launch_data_t ("resp") is of type LAUNCH_DATA_ERRNO. The error is always 13 (EACCESS). Apparently my daemon doesn't have permissions to get the response to LAUNCH_KEY_CHECKIN...?
Anyone know why I don't have permission to receive this dictionary?
Anyone know how to get this working (or an alternative method to get active FDs from within the daemon?) |