gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:09:35 26 4
gpt4 key购买 nike

我正在研究 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

为什么?

最佳答案

当设置它的进程结束时,一个抑制会自动释放。

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

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

关于python - PowerManagement.Inhibit 适用于 dbus-python 但不适用于 dbus-send,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17478532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com