小编Hip*_*Man的帖子

MacOSX 10.8.2:如何清除不需要的电源管理断言?

有一些程序在MacOSX Mountain Lion下运行,现在(自安装10.8.2以来)导致设置不需要的电源管理断言.我正在寻找一种方法来清除这些断言.

这是一个例子:这些程序中的一个或多个导致以下电源管理断言设置在"powerd"内.请注意下面的"powerd"行...

% pmset -g assertions    
10/7/12 11:51:47 AM EDT  
Assertion status system-wide:
   PreventUserIdleDisplaySleep    1
   CPUBoundAssertion              0
   PreventSystemSleep             0
   PreventUserIdleSystemSleep     0
   ExternalMedia                  0
   UserIsActive                   0
   ApplePushServiceTask           0
   BackgroundTask                 0

Listed by owning process:
  pid 18(powerd): [0x00000005000001d7] 11:24:18 PreventUserIdleDisplaySleep named: "com.apple.powermanagement.delayDisplayOff" 
... etc. ...
Run Code Online (Sandbox Code Playgroud)

这些程序退出并将这种电源管理断言留在"powerd"中,并且它永远保持活跃状态​​.这可以防止"显示睡眠"和屏幕保护程序被调用.

在这种情况下我知道的唯一选项(除了重新启动)是在"powerd"进程上执行"kill -HUP".这会导致守护程序退出并重新启动而不会出现错误的断言.

有没有人知道10.8.2下的方法让我在"powerd"中清除"PreventUserIdleDisplaySleep"断言,而不强制重启该守护进程?如果需要,我很高兴通过Cocoa,Carbon或AppleScript程序来完成这项工作.

我知道IOPMLib,但该库中的例程似乎只能清除在同一进程中创建的幂断言.我需要一种方法来告诉外部和已经运行的"powerd"进程清除管理的"PreventUserIdleDisplaySleep"断言.有没有人知道在运行的"powerd"实例中外部设置和清除电源管理断言的API?也许是通过某种通知...... ???

macos assertions power-management osx-mountain-lion

14
推荐指数
1
解决办法
1万
查看次数