gpt4 book ai didi

macos - 在 OS X 中使用 launchd 加载和配置内核扩展

转载 作者:行者123 更新时间:2023-12-01 13:13:18 26 4
gpt4 key购买 nike

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

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

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

另一种选择是有两个 launchd 项,一个用于 kext(使用 kextload),另一个用于用户态配置文件读取器。这将避免 fork ,但在其他方面是相同的。无论哪种方式,launchd 都必须运行一个快速的非守护进程用户态程序。

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

Important: If your daemon shuts down too quickly after being launched, launchd may think it has crashed. Daemons that continue this behavior may be suspended and not launched again when future requests arrive. To avoid this behavior, do not shut down for at least 10 seconds after launch.

这给我的印象是 launchd 不是执行此操作的正确方法。我应该如何组织发布会?我的整个想法是不是走错了方向?

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

最佳答案

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

关于macos - 在 OS X 中使用 launchd 加载和配置内核扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5952298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com