OSX:我应该使用哪种类型的守护进程/后台进程?

时间:2015-03-17 01:27:11

标签: macos daemon background-process

我有一个程序,我想在启动时运行,从睡眠中唤醒。但是,我找到了许多不同类型服务的资源,这对我来说很有用。关于哪种守护进程/后台服务最适合我的目的,我需要一个很好的答案。以下是关于我的计划的一些细节概述:

1)当计算机从睡眠状态唤醒,重新启动或从关闭状态启动时,它将在后台自动启动(也就是用户不知道它)。

2)程序将为每个用户单独操作。由于程序的操作而创建的文件需要为每个用户分开。

我在https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/DesigningDaemons.html#//apple_ref/doc/uid/10000172i-SW4-BBCBHBFB找到了一个很好的资源,但我不确定使用哪个:登录项,XPC服务,启动守护程序或启动代理。

1 个答案:

答案 0 :(得分:1)

  

2)程序将为每个用户单独操作。由于程序的操作而创建的文件需要为每个用户分开。

这强烈建议使用LaunchAgent,因为它们是每用户(并以用户身份运行)。

您可能需要的页面是launchd.plist手册页。

我不知道与您的请求匹配的launchd触发器,遗憾的是,您可能需要使用KeepAlive选项运行并监视电源更改。

您将在启动时抓住登录(虽然没有启动,因为那不是"每个用户")因此很容易。通过观察NSWorkspace NSWorkspaceWillPowerOffNotification等通知,可以通过Cocoa和 NSWorkspaceWillSleepNotification轻松管理睡眠和断电。如果Cocoa对于您的问题来说太高级,您可以挂钩IOKit电源管理事件。请参阅IOKit基础知识中的Managing Power以获得良好的低级别介绍。

请注意,有一种清醒但不是真的"被称为DarkWake的州,根据您的需要可能会让您感到困惑。 2012年WWDC视频Power Management是对此问题的一个很好的介绍。