我的应用是一个Web服务器。它作为服务在Windows上运行,在Linux上作为守护进程运行。对app的支持就在app本身内部。 e.g。
MyWebServer -s
在Windows上安装并作为服务运行
MyWebserver -d
在Linux上将其作为守护进程运行(虽然也可以使用脚本)
在Mac OS X上,所有帖子都指向
launchctl
需要plist xml文件
我只想让我的用户输入
sudo ./MyWebServer -s
它应该自动安装MyWebServer实例作为“launchd”守护进程设置为从计算机开始并在后台静默运行。
我见过一些没有任何plist xml文件的应用程序。如何在应用程序中添加对该文档的支持。我的服务器是用C / C ++编写的
编辑:我不想在OS X中使用fork方法而是使用推荐的launchd守护程序
答案 0 :(得分:1)
如果您希望将进程作为deamon运行,只需将其从终端中分离即可。通常最小的方法是:
if (fork()!=0) {
exit(0);
}
// do the job
这将创建一个将由init采用的孤儿进程。
如果您想提供启动时间启动和launchd
控制,请查看OSX上的/Library/LaunchDaemons
。
答案 1 :(得分:1)
您可以尝试调用launchctl
并使用其submit
选项,该选项可让您在没有配置文件的情况下提交程序。读这个男人更多。
答案 2 :(得分:0)
您似乎很难理解,在OSX中在用户看不见的背景下在后台运行启动守护程序,就像在窗口中创建带有一行文本的服务一样简单。这只是Windows令人震惊的安全性原因之一,而恶意软件就像是开放的马戏团尿液一样可以在其中运行。
您说的是用C ++编写的代码并符合OSX,但这并不意味着将可疑的守护程序列入启动列表是合法的。
您需要将已编译的程序复制到主文件夹。 然后,您需要为其创建一个.plist文件,其中包含所有正确的详细信息。 然后将.plist文件复制到/ launchdaemons目录(需要root访问) 然后,您将再次需要root用户访问权限,才能在新位置使用plist文件的chroot注册和更改所有权。 最后直接使用启动本身进行注册(需要root访问)
如果您的守护程序正在做任何高度可疑的事情,加载/卸载kext模块或编辑此类重要文件,则SIP将拒绝它,您将A)转到Apple并获得认证,或者B)手动禁用SIP手动处于恢复模式