2

我需要能够检测代理应用程序的启动和终止,而无需在 Mac OS X 上进行轮询

Apple 的技术说明 TN2050 建议使用 NSWorkspace 或 Kqueues。

似乎 NSWorkspaceDidLaunchApplicationNotifications 不适用于代理应用程序。我不完全理解为什么,但它对 LSUIElement=1 属性的存在很敏感。

KQueue API 只能使用 NOTE_EXIT 检测进程终止,并且会成功检测到应用程序代理的退出。但是,无法使用此 API 检测应用启动事件。

我还尝试了内核授权子系统,发现可以使用带有 KAUTH_VNODE_EXECUTE 的 KAUTH_SCOPE_VNODE 或带有 KAUTH_FILEOP_EXEC 的 KAUTH_SCOPE_FILEOP 来检测代理启动。但是我找不到使用 KAuth 检测进程终止的方法。

除了使用 KAuth 来检测启动和 KQueue 来检测终止之外,是否有更好的方法来检测代理应用程序的启动和终止?

谢谢

4

0 回答 0