OS X - 真正'On Demand'特权助手工具



我的应用程序需要将文件写入文件系统上的受限位置。
为此,我使用以 root 身份运行的辅助工具。

一切正常,按照此示例,我的帮助程序工具已正确安装并运行。我使用此解决方案能够"唤醒"帮助程序工具,否则它在初始加载后不会启动多次。

帮助程序工具正在等待来自主应用程序的消息,并正确执行它们。我还有一种消息要求该工具关闭,该工具也可以正常工作。

问题是,无论我在launchd.plist文件中指定什么键,每次退出时launchd重新启动该工具。
我不希望帮助程序工具永远运行,等待消息,而是仅按需启动。

:辅助工具每次结束时都重新启动正常吗?如果没有,如何让它死机并按需重启?

以下是launchd.plist内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>KeepAlive</key>
        <dict>
            <key>SuccessfulExit</key>
            <false/>
        </dict>
        <key>RunAtLoad</key>
        <true/>
        <key>Label</key>
        <string>com.mycompany.Helper</string>
        <key>MachServices</key>
            <dict>
                <key>com.mycompany.Helper</key>
                <true/>
            </dict>
     </dict>
</plist>

当然,我尝试了键和值的各种组合,以及帮助程序工具的各种退出状态代码。它没有以任何方式改变launchd管理这个过程。

终端中键入man launchd.plist为您提供launchd理解的所有选项。在你能找到的那些中(强调我的(:

KeepAlive <布尔值或字典>

可选键用于控制作业是保持持续运行,还是让需求和条件控制调用。默认值为 false,因此只有需求才会启动作业。该值可以设置为 true 以无条件地使作业保持活动状态。或者,可以指定条件字典,以有选择地控制启动是否使作业保持活动状态。如果提供了多个键,则启动 OR 键,从而为作业提供最大的灵活性,以优化逻辑并在必要时停止。如果 launchd 找不到重新启动作业的理由,它将回退到基于需求的调用。 在配置为保持活动状态时快速频繁退出的作业将受到限制以节省系统资源。

你没有写出你的"键和值的各种组合"到底是什么。但是从本文档中,如果您想要一个按需启动的守护进程,您应该简单地从 plist 中删除<key>KeepAlive</key>或将其值设置为 <false/> 而不是 <dict>...</dict>

相关内容

最新更新