1

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

我尝试了什么?我已经参考了这些Apple DocsLaunchd Tutorial & Creating 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?请帮我找到完成它的最佳方法?

4

1 回答 1

2

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

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

如果您希望每个被帮助的应用程序有一个单独的进程,那么您可以使用应用程序 XPC 服务来实现,但 XPC 也不支持服务于单个应用程序的多个进程。有关更多信息,请参阅运行同一 XPC 服务 (NSXPCConnection)的多个实例。

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

于 2015-04-16T17:46:23.950 回答