【问题标题】:MAC OSX Agents - how to launch multiple instancesMAC OSX 代理 - 如何启动多个实例
【发布时间】:2015-06-23 04:57:27
【问题描述】:

我正在尝试创建辅助对象(它可能是守护进程或代理)。正如您在 Chrome 和 Safari 助手中看到的那样,这应该是按需启动的,并且它的多个实例应该存在。

我尝试了什么? 我已经推荐了这些Apple DocsLaunchd TutorialCreating Start Up Items in Mac OS X

有人提到,对于进程数量,我们应该使用NumberOfProcesses 键,我使用了它,但在活动监视器中我只看到一个实例。

我的 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>Label</key>
    <string>com.anoop.test</string>
    <key>NumberOfProcesses</key>
    <string>5</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/anoopvaidya/Desktop/0@/WebTwainService</string>
        <string>start</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>Application is agent (UIElement)</key>
    <string>YES</string>
</dict>
</plist>

从 Chrome 开始,我是否在正确的路径上复制 Launch Agent Helper? 请帮我找到完成它的最佳方法?

【问题讨论】:

    标签: macos helper launchd launch-agent


    【解决方案1】:

    NumberOfProcesses 不是顶级键。它是HardResourceLimits 的子键,用于指示在内核阻止您之前您的守护程序或代理可以创建多少个子进程。它与 launchd 创建进程的多个实例无关。

    Launchd 不支持为单个作业管理多个进程。 Chrome 和 Safari 不使用 Launchd 来管理他们的工作流程。他们自己管理这些。

    如果您希望每个被帮助的应用程序有一个单独的进程,那么您可以使用应用程序 XPC 服务来实现,但 XPC 也不支持服务于单个应用程序的多个进程。请参阅Running multiple instances of the same XPC service (NSXPCConnection) 了解更多信息。

    典型的模式是有一个 LaunchAgent/Daemon 接受传入的连接,然后分叉自己以独立处理每个客户端。我认为相同的模式应该适用于 XPC 服务(现在是首选),但我以前没有这样构建过。

    【讨论】:

    猜你喜欢
    • 2014-05-18
    • 2010-12-06
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多