2011-05-10 97 views
2

我正在为套接字过滤编写一个网络内核扩展。为了使其可配置,用户级程序读取配置文件并通过PF_SYSTEM套接字将信息传递给kext。使用launchd在OS X中加载和配置内核扩展

如果我想在系统启动时尽快启动并运行套接字筛选器,我将如何编排启动程序?

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

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

但是,launchd似乎适用于启动实际的守护进程,而不是用于执行其工作和退出的快速任务。该developer library document说:

重要提示:如果你的守护进程太快,在启动后关机,launchd会可能会认为它已经崩溃。继续这种行为的守护进程可能会被暂停,并且在未来的请求到达时不会再次启动。为了避免这种情况,请不要在启动后至少关闭10秒钟。

这给我的印象是launchd不是正确的做法。我应该如何组织启动?我的整个想法是否朝着错误的方向发展? (作为一个方面说明,我想让用户在运行时也可以改变过滤选项,我想这可以简单地通过在需要改变时打开一个新的PF_SYSTEM套接字连接到kext来完成)。

回答

2

我认为这个警告只适用于按需启动的守护进程。

+0

谢谢。如果事实确实如此,那是个好消息。这是你自己发现的东西,还是记录在某处? – jjs 2011-05-10 19:07:01