gpt4 book ai didi

dbus - 您可以在不调用org.freedesktop.DBus.Properties.Get的情况下检索D-Bus属性吗?

转载 作者:行者123 更新时间:2023-12-01 18:07:02 26 4
gpt4 key购买 nike

假设我要以编程方式获取我的以太网卡的接口名称。这似乎可行:

dbus-send --print-reply \
--type=method_call \
--system \
--dest=org.freedesktop.NetworkManager \
/org/freedesktop/NetworkManager/Devices/0 \
org.freedesktop.DBus.Properties.Get \
string:org.freedesktop.NetworkManager.Device \
string:Interface


哪个返回:

method return sender=:1.5 -> dest=:1.135 reply_serial=2
variant string "eth0"


有什么方法可以消除中间人 org.freedesktop.DBus.Properties.Get并更直接地检索属性? las,将其作为方法调用不起作用:

dbus-send --print-reply \
--type=method_call \
--system \
--dest=org.freedesktop.NetworkManager \
/org/freedesktop/NetworkManager/Devices/0 \
org.freedesktop.NetworkManager.Device.Interface


返回值:

Error org.freedesktop.DBus.Error.UnknownMethod: 
Method "Interface" with signature "" on interface
"org.freedesktop.NetworkManager.Device" doesn't exist


我问是因为在Python / Java / etc中必须调用 org.freedesktop.DBus.Properties.Get看起来就像必须调用 object.getProp("someproperty")而不是 object.getSomeProperty()

最佳答案

没有。

org.freedesktop.DBus.Properties.GetAll很可能会返回相同的值,但内部每个服务都将属性实现为带有org.freedesktop.DBus.Properties.Get / org.freedesktop.DBus.Properties.GetAll方法调用的消息的处理程序。

看起来像object.getProp("someproperty"),因为它实际上更像是此伪代码

bus.handleMessage({
service: "org.freedesktop.NetworkManager",
object: "/org/freedesktop/NetworkManager/Devices/0",
iface: "org.freedesktop.NetworkManager.Device.Interface",
body: [ "org.freedesktop.NetworkManager.Device", "Interface"],
thisMessageIsReplyTo: null
})


在内部,每个方法调用/信号/回复只是一条带有大签名(服务名称/对象路径/接口)和主体的消息

关于dbus - 您可以在不调用org.freedesktop.DBus.Properties.Get的情况下检索D-Bus属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18243912/

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