【问题标题】:How do I programatically detect if my laptop is plugged in or not? (osx)如何以编程方式检测我的笔记本电脑是否已插入? (osx)
【发布时间】:2014-01-21 04:50:06
【问题描述】:

正如标题所说——我正在寻找一种方法,在 OSX 中,告诉我我的笔记本电脑当前是否已插入,以便我可以根据需要启动/暂停 CPU 密集型任务。

更好的是,一种在插入状态发生更改时获取通知的方法。

【问题讨论】:

  • 大声哭泣...我正在寻找一种程序化的方法来检测这一点,这是一个编程问题,天哪。

标签: macos shell


【解决方案1】:

你可以使用pmset:

-g ps / batt 显示电池和UPS的状态。

说:

pmset -g ps

会告诉您笔记本电脑是使用交流电源运行还是使用电池供电。

要转换为条件,应该可以使用以下内容:

if [[ $(pmset -g ps | head -1) =~ "AC Power" ]]; then
  echo "power on!"
fi

【讨论】:

  • 太棒了,谢谢 :) 我想知道“交流电源”的 grepping 是否足够一致......
  • @cwolves 我认为应该是。
  • 是的,我也是。我只是想知道!"Battery" 是否会更好。并不是说我能想到“交流电源”和“电池”以外的任何东西:)……我想太多了;)
  • 逆向工程pmset 会准确地告诉你它是如何做出决定的,所以你不必解析它的输出。我不是 Mac 用户,但在 Linux 上,这种东西通常可以在 /proc/sys 中找到。此外,运行 dtruss 可能会立即显示。
  • @cwolves 很公平 :-) 毕竟,it doesn't appear to be so simple.
【解决方案2】:

pmset(1) 看起来很有希望。具体来说:

-g ps / batt 显示电池和UPS的状态。

翻看source code for pmset,看来你要找的关键函数是IOPSGetProvidingPowerSourceType,其中

表示计算机当前使用的电源。

【讨论】:

    猜你喜欢
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多