1

ヘルパー オブジェクトを作成しようとしています (デーモンまたはエージェントの可能性があります)。Chrome および Safari ヘルパーで見られるように、これはオンデマンドで起動され、その複数のインスタンスがそこにあるはずです。

何を試しましたか?これらのApple DocsLaunchd TutorialCreating Start Up Items in Mac OS Xを参照しました

そこには、NumberOfProcessesキーを使用する必要があるプロセスの数について言及されていますが、私はそれを使用しましたが、アクティビティモニターではインスタンスが 1 つしか表示されません。

そして、私の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 は、1 つのジョブに対する複数のプロセスの管理をサポートしていません。Chrome と Safari は、ジョブ プロセスの管理に Launchd を使用しません。彼らはこれらを自分たちで管理します。

支援されるアプリケーションごとに個別のプロセスが必要な場合は、アプリケーション XPC サービスを使用してそれを実現できますが、XPC は単一のアプリケーションを支援するサービスの複数のプロセスもサポートしていません。詳細については、同じ XPC サービス (NSXPCConnection) の複数のインスタンスの実行を参照してください。

典型的なパターンは、着信接続を受け入れる単一の LaunchAgent/Daemon を持ち、それ自体を fork して各クライアントを個別に処理することです。同じパターンが XPC サービス (現在は推奨されています) でも機能するはずですが、その方法で構築したことはありません。

于 2015-04-16T17:46:23.950 に答える