PowerManagement.Inhibit 适用于 dbus-python 但不适用于 dbus-send

Posted

技术标签:

【中文标题】PowerManagement.Inhibit 适用于 dbus-python 但不适用于 dbus-send【英文标题】:PowerManagement.Inhibit works with dbus-python but not dbus-send 【发布时间】:2013-07-02 22:42:01 【问题描述】:

我正在处理a project,我需要以编程方式禁止电源管理(例如挂起)。我可以通过 Python 完美地做到这一点:

import dbus
pm = dbus.SessionBus().get_object("org.freedesktop.PowerManagement", "/org/freedesktop/PowerManagement/Inhibit")
print(pm.HasInhibit()) # 0
inhibited = pm.Inhibit("Me", "I said so")
print(pm.HasInhibit()) # 1
pm.UnInhibit(inhibited)
print(pm.HasInhibit()) # 0

但从命令行使用 dbus-send 时不会:

$ dbus-send --print-reply --dest=org.freedesktop.PowerManagement /org/freedesktop/PowerManagement/Inhibit org.freedesktop.PowerManagement.Inhibit.HasInhibit
method return sender=:1.2 -> dest=:1.260969 reply_serial=2
  boolean false
$ dbus-send --print-reply --dest=org.freedesktop.PowerManagement /org/freedesktop/PowerManagement/Inhibit org.freedesktop.PowerManagement.Inhibit.Inhibit string:"Me" string:"I said so"
method return sender=:1.2 -> dest=:1.260972 reply_serial=2
  uint32 52
$ dbus-send --print-reply --dest=org.freedesktop.PowerManagement /org/freedesktop/PowerManagement/Inhibit org.freedesktop.PowerManagement.Inhibit.HasInhibit
method return sender=:1.2 -> dest=:1.260973 reply_serial=2
  boolean false

为什么?

【问题讨论】:

【参考方案1】:

当设置它的进程终止时,它会自动释放。

因此对于一次性命令,禁止将立即释放。

我在 Freedesktop.org 上找不到规范,但我自己在 KDE 和 this page 下的测试倾向于确认这种行为在大多数会话管理器/电源管理器上是相同的。

【讨论】:

以上是关于PowerManagement.Inhibit 适用于 dbus-python 但不适用于 dbus-send的主要内容,如果未能解决你的问题,请参考以下文章

网络适​​配器 NUMA

网络适​​配器无法建立连接 - Oracle 11g

网络适​​配器无法建立连接 - Oracle 11g

普适计算的六大必备条件

普适计算-2014/04/11

普适计算-2014/03/14