【发布时间】:2014-01-21 04:50:06
【问题描述】:
正如标题所说——我正在寻找一种方法,在 OSX 中,告诉我我的笔记本电脑当前是否已插入,以便我可以根据需要启动/暂停 CPU 密集型任务。
更好的是,一种在插入状态发生更改时获取通知的方法。
【问题讨论】:
-
大声哭泣...我正在寻找一种程序化的方法来检测这一点,这是一个编程问题,天哪。
正如标题所说——我正在寻找一种方法,在 OSX 中,告诉我我的笔记本电脑当前是否已插入,以便我可以根据需要启动/暂停 CPU 密集型任务。
更好的是,一种在插入状态发生更改时获取通知的方法。
【问题讨论】:
你可以使用pmset:
-gps / batt 显示电池和UPS的状态。
说:
pmset -g ps
会告诉您笔记本电脑是使用交流电源运行还是使用电池供电。
要转换为条件,应该可以使用以下内容:
if [[ $(pmset -g ps | head -1) =~ "AC Power" ]]; then
echo "power on!"
fi
【讨论】:
!"Battery" 是否会更好。并不是说我能想到“交流电源”和“电池”以外的任何东西:)……我想太多了;)
pmset 会准确地告诉你它是如何做出决定的,所以你不必解析它的输出。我不是 Mac 用户,但在 Linux 上,这种东西通常可以在 /proc 或 /sys 中找到。此外,运行 dtruss 可能会立即显示。
pmset(1) 看起来很有希望。具体来说:
-g ps / batt 显示电池和UPS的状态。
翻看source code for pmset,看来你要找的关键函数是IOPSGetProvidingPowerSourceType,其中
表示计算机当前使用的电源。
【讨论】: