5

我需要将“服务器类型”应用程序绑定到 OS X 10.6 及更高版本上的特权端口 (<1024)。该应用程序通常由没有 root 权限的用户执行。

在阅读了该站点上的许多线程后,我发现此选项是最新且最安全的方式:

1)编写一个助手应用程序来打开特权端口。
2)使用 SMJobBless 来“安装”助手应用程序来启动。
3)从主应用程序(通过IPC)调用助手应用程序以检索打开的特权端口。

苹果文档

因为 launchd 本身以 root 用户身份运行,如果您使用特权进程的唯一原因是在低编号端口上运行守护程序,您可以让 launchd 代表您的守护程序打开该端口并将打开的套接字传递给您的守护程序,从而消除您的代码以 root 用户身份运行的需要。

我不只是运行一个用户应用程序的守护进程,但同样的原则也适用。

我找到了SMJobBless 的代码示例并阅读了Nathan de Vries 的博客。(不能使用 XPC - 在 OSX 10.6 上不可用)。

我对 SMJobBless / launchd 编码非常清楚。

我的问题: 请指出代码示例,该示例演示如何在另一个应用程序(即帮助程序)中打开端口并将端口句柄(CFSocketRef?)传递回主应用程序。也许有人可以向我指出一个通过 SMJobBless 实现这一点的代码示例。

非常感谢

4

0 回答 0