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