检测osx何时从睡眠中休眠/恢复

时间:2012-12-06 20:36:19

标签: python c macos

是否有可能编写一个python程序(我将作为一个守护进程运行),可以检测osx进入睡眠状态以及何时从睡眠状态恢复?

道歉,如果它听起来我还没有研究过这个 - 我很好地脱离了我的舒适区域并且不确定我是否需要从python委托给用C语言写的可以报告这个的东西,或者这是不必要的。

2 个答案:

答案 0 :(得分:3)

有一些工具可以在IOKit中执行此操作 - 具体而言,在{1}}注册的回调将在系统休眠之前立即调用,并在其唤醒后立即调用。

您可能需要查看bb's sleepwatcher daemon,它可以调用您在发生各种事件时指定的命令,包括系统睡眠/唤醒,以及各种其他事件(显示睡眠/唤醒,系统空闲) ,关机......)。

答案 1 :(得分:1)

Cocoa开发人员可以收听NSWorkspaceDidWakeNotification

- (void) receiveSleepNote: (NSNotification*) note
{
    NSLog(@"receiveSleepNote: %@", [note name]);
}

- (void) receiveWakeNote: (NSNotification*) note
{
    NSLog(@"receiveWakeNote: %@", [note name]);
}

- (void) fileNotifications
{
    //These notifications are filed on NSWorkspace's notification center, not the default
    // notification center. You will not receive sleep/wake notifications if you file
    //with the default notification center.
    [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver: self
            selector: @selector(receiveSleepNote:)
            name: NSWorkspaceWillSleepNotification object: NULL];

    [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver: self
            selector: @selector(receiveWakeNote:)
            name: NSWorkspaceDidWakeNotification object: NULL];
}

此示例代码摘自Apple的文档:Registering and unregistering for sleep and wake notifications