在Mac OSX上打包C守护程序的推荐方法是什么?

在Mac OSX上打包C守护程序的推荐方法是什么?,第1张

概述我正在开发一个多平台项目,该项目由在 Windows, Linux和Mac OSX上运行的服务/守护进程组成. 我的代码是可移植的,并且应用程序在所有系统上运行良好(从命令行).由于此应用程序旨在在后台运行,因此我将其作为Windows上的Windows服务和Linux上的Linux守护程序(在init.d中具有相应的脚本). 现在我的问题是Mac OSX:我对这个 *** 作系统没什么经验,而且我很难找 我正在开发一个多平台项目,该项目由在 Windows,Linux和Mac OSX上运行的服务/守护进程组成.

我的代码是可移植的,并且应用程序在所有系统上运行良好(从命令行).由于此应用程序旨在在后台运行,因此我将其作为windows上的windows服务和linux上的linux守护程序(在init.d中具有相应的脚本).

现在我的问题是Mac OSX:我对这个 *** 作系统没什么经验,而且我很难找到关于我的情况的最佳实践:

我想为我的项目安装一个安装程序(我相信一个.dmg文件,可能会安装.app;如果有更好的选择,请纠正我).

这里有关于我的这个项目的一些信息:

>它完全用C构建(它使用boost,curl,iconv)
>当前的构建系统不是XCode(但是如果有一种方法可以保持我当前的代码布局,同时将所有内容集成到XCode中,我不介意.无论如何,我已经为windows做了类似的事情).
>没有图形用户界面
>守护进程应该在启动时自动启动(甚至更好:让用户选择).
>守护程序在执行期间需要root访问权限.

对于单个问题,这可能需要考虑很多上下文,因此我将尝试使其更易于阅读:

您将如何在Mac OSX上打包/创建纯C守护程序的安装程序?

解决方法 由于这没有UI,我不会将其打包为.app – 这是双击GUI应用程序的首选格式,而不是守护进程.如果它只是一个二进制文件(除了配置文件之类的东西之外没有支持文件等),我会遵循unix约定并将二进制文件放在某个地方,比如/usr/local/libexec(或者你把它放在linux上的任何地方).请注意,OS X上默认不存在/usr/local,因此如果安装程序不存在,则需要创建它.

为了让它执行:我同意詹姆斯贝德福德关于使用launchd的建议. launchd .pList文件应安装在/ library / launchdaemons中(launchdaemons在启动时以root身份运行,而LaunchAgent在用户登录时以普通用户身份运行).确保守护进程不会掉进后台 – launchd会监视它启动的程序,如果它们自己背景,它会认为它们已经崩溃了,并且通常会尝试重新启动它们,这样做效果不好.您可以调整设置以使用后台程序,但最好让它在前台运行.

对于包装:在这里,我同意mah – 使用安装程序包.我实际上仍然喜欢旧的GUI PackageMaker工具(不推荐使用,但它仍然有效),但是新的Cli工具可能更好地学习.如果您遵循我关于/usr/local/libexec的建议,您的包实际上应该包含“本地”目录(包含libexec subdir和您的二进制文件),并将其安装到/ usr中 – 如果/usr/local已经存在,它只会与已经存在的东西合并,但如果没有,它将创造整个东西.另一方面,/ library / launchdaemons保证存在,因此您的包只需要包含要放入其中的实际.pList文件.

总结

以上是内存溢出为你收集整理的在Mac OSX上打包C守护程序的推荐方法是什么?全部内容,希望文章能够帮你解决在Mac OSX上打包C守护程序的推荐方法是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1027741.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存