[launchd-dev] Check-in failed?
Vyacheslav Karamov
ubuntulist at yandex.ru
Mon Jun 2 04:58:15 PDT 2008
Hi All!
I'm writing my first launchd-enabled daemon, It works in Tiger, but not
in Leopard.
It writes "Check-in failed:" into syslog end exits. Here is my code:
int main (int argc, char * const argv[])
{
signal(SIGTERM, SigtermHandler);
signal(SIGINT, SigtermHandler);
/*
* Create a new ASL log
*
*/
g_asl = asl_open("AudioServer", "Daemon", ASL_OPT_STDERR);
log_msg = asl_new(ASL_TYPE_MSG);
asl_set(log_msg, ASL_KEY_SENDER, "AudioServer");
asl_set_filter(g_asl, ASL_FILTER_MASK_UPTO(ASL_LEVEL_INFO));
/*
* Register ourselves with launchd.
*
*/
launch_data_t checkin_request =
launch_data_new_string(LAUNCH_KEY_CHECKIN);
if ( checkin_request == NULL )
{
asl_log(g_asl, log_msg, ASL_LEVEL_ERR,
"launch_data_new_string(\"" LAUNCH_KEY_CHECKIN "\") Unable to create
string.");
return EXIT_FAILURE;
}
launch_data_t checkin_response = launch_msg(checkin_request);
if ( checkin_response == NULL )
{
asl_log(g_asl, log_msg, ASL_LEVEL_ERR, "launch_msg(\""
LAUNCH_KEY_CHECKIN "\") IPC failure: %m");
return EXIT_FAILURE;
}
if (LAUNCH_DATA_ERRNO == launch_data_get_type(checkin_response))
{
errno = launch_data_get_errno(checkin_response);
asl_log(g_asl, log_msg, ASL_LEVEL_ERR, "Check-in failed: %m");
return EXIT_FAILURE;
}
....
}
$ cat /Library/LaunchDaemons/com.circle.AudioServer.Debug.plist:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE plist/ (View Source for full doctype...)/>
- <#> <plist version="*1.0*">
- <#> <dict>
<key>Label</key>
<string>com.circle.AudioServer</string>
<key>OnDemand</key>
<false />
<key>ProgramArguments</key>
- <#> <array>
<string>/Users/slava/Projects/AudioServer/build/Debug/AudioServer</string>
</array>
<key>RunAtLoad</key>
<true />
<key>ServiceIPC</key>
<true />
</dict>
</plist>
Both binary and property list have root:wheel 755 permissions
More information about the launchd-dev
mailing list