2
我想創建一個連接到烏思--system總線並列出所有的服務連接(bus_names)的程序。就像「qdbus」一樣。DBus - 如何列出系統總線中的所有服務(總線名稱)?
是否有人能幫助我嗎?
我dbus的版本是DBUS-1.2.24,我編程C(不綁定)。
我想創建一個連接到烏思--system總線並列出所有的服務連接(bus_names)的程序。就像「qdbus」一樣。DBus - 如何列出系統總線中的所有服務(總線名稱)?
是否有人能幫助我嗎?
我dbus的版本是DBUS-1.2.24,我編程C(不綁定)。
你可能想看看Qt DBus List Names example。
QDBusConnection bus = QDBusConnection::sessionBus();
QDBusInterface dbus_iface("org.freedesktop.DBus", "/org/freedesktop/DBus",
"org.freedesktop.DBus", bus);
qDebug() << dbus_iface.call("ListNames").arguments().at(0);
下面是使用命令行的例子:
# qdbus --literal --system org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames
{"org.freedesktop.DBus", ":1.23", ":1.31", "org.freedesktop.Avahi", ":1.24", ":1.26"}
# dbus-send --system --dest=org.freedesktop.DBus --print-reply=literal /org/freedesktop/DBus org.freedesktop.DBus.ListNames
array [
org.freedesktop.DBus :1.23 org.freedesktop.Avahi :1.24 :1.33 :1.26 ]
你也可能只是想直接去源,工具/ qdbus/qdbus/qdbus.cpp,在QT源。在那裏,你會發現,如果args.empty()
它調用printServiceNames()
剛剛返回的registeredServiceNames()
呼籲系統總線接口的結果。然後,該代碼執行以下操作:
QDBusReply<QStringList> QDBusConnectionInterface::registeredServiceNames() const
{
return internalConstCall(QDBus::AutoDetect, QLatin1String("ListNames"));
}
現在我們來了整整一圈。
在這個答案的鏈接已被打破/移到 http://doc.qt.digia.com/4.7/dbus-listnames-listnames-cpp.html – dmiller309 2013-05-21 00:53:55
@ dmiller309:謝謝,更新 – Harvey 2013-05-30 01:21:48
這裏是鏈接: http://unix.stackexchange.com/questions/46301/a-list-of-available-dbus-services#來顯示使用發送-DBUS: – AjayKumarBasuthkar 2014-03-21 07:20:46