3

我正在为套接字过滤编写网络内核扩展。为了使其可配置,用户态程序读取配置文件并通过PF_SYSTEM套接字将信息传递给 kext。

如果我想在系统启动时尽快启动并运行套接字过滤器,我将如何设计启动?

我目前的想法是使用 launchd 来启动一个小的用户空间初始化程序。该程序将用于kextload启动 kext。之后,它将读取配置文件并通过PF_SYSTEM套接字与 kext 对话。完成工作后,它会迅速退出。

另一种选择是有两个launchd项目,一个用于 kext(使用kextload),另一个用于用户区配置文件阅读器。这将避免分叉,但否则将是相同的。无论哪种方式,launchd都必须运行一个快速的非守护程序用户空间程序。

然而,launchd似乎是为了启动实际的守护进程,而不是为了完成工作和退出的快速任务。开发人员库文档说:

重要提示:如果您的守护程序在启动后关闭得太快,launchd 可能会认为它已经崩溃。继续这种行为的守护进程可能会被挂起,并且在未来的请求到达时不会再次启动。为避免此行为,请在启动后至少 10 秒内不要关闭。

这给我的印象launchd是这样做不是正确的方法。我应该如何组织发布?我的整个想法是否朝着错误的方向发展?

(作为旁注,我想让用户也可以在运行时更改过滤选项。我想这可以通过在需要更改时打开到 kext 的新 PF_SYSTEM 套接字连接来完成。)

4

1 回答 1

2

我认为该警告仅适用于按需启动的守护进程。

于 2011-05-10T18:11:01.220 回答