Macos Mac osx启动守护程序和套接字

Macos Mac osx启动守护程序和套接字,macos,sockets,daemon,launchd,Macos,Sockets,Daemon,Launchd,我有一个osx守护进程,它监听端口8080 我的plist文件:com.mycompany.daemon.plist <?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&

我有一个osx守护进程,它监听端口8080

我的plist文件:com.mycompany.daemon.plist

<?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.daemon</string>
    <key>Program</key>
        <string>/Applications/MyApp/MyDaemon</string>
    <key>KeepAlive</key>
        <true/>
    <key>inetdCompatibility</key>
    <dict>
        <key>Wait</key>
        <false/>
    </dict>
    <key>Sockets</key>
    <dict>
    <key>MyListener</key>
        <dict>
            <key>SockServiceName</key>
            <string>8080</string>
            <key>SockType</key>
            <string>stream</string>
        </dict>
    </dict>
</dict>
</plist>
我的问题出现在这里,当我试图通过launch_msg()签入时,我得到了“不允许操作”错误。我试图以root用户身份启动我的守护进程,但没有成功。这是一个好方法吗?有没有其他方法可以打开插座?我正在使用osx 10.9.2。谢谢

if ((checkin_request = launch_data_new_string(LAUNCH_KEY_CHECKIN)) == NULL) {
    retval = EXIT_FAILURE;
    goto done;
}

if ((checkin_response = launch_msg(checkin_request)) == NULL) {
    asl_log(asl, log_msg, ASL_LEVEL_ERR, "launch_msg(\"" LAUNCH_KEY_CHECKIN "\") IPC failure: %m");
    retval = EXIT_FAILURE;
    goto done;
}