当前位置: 首页 > 面试题库 >

如何找出要使用的D-Bus绑定

澹台奇略
2023-03-14
问题内容

我正在尝试在所有Linux上检测屏保是否正在运行或屏幕是否被锁定。

人们推荐dbus。因此,现在我尝试使用x11或C API或某种可用的dbus自动检测,然后使用它。像qdubs,gdbus等?

谢谢


问题答案:

您已经注意到,有各种可用的D-Bus绑定。正如Ignacio所说,您可以使用它们中的任何一个,因为它们都使用相同的协议-
但是某些绑定比某些绑定更适合某些情况。

推荐的高级绑定:

  • GDBus是基于GLib / GObject的高级绑定。如果您要基于GNOME技术或GLib编写服务或应用程序,则适合使用。它是用C语言编写的,但是使用gobject-introspection可以为其他语言提供绑定(在各种功能级别上)。
  • QtDBus是基于Qt的高级绑定。如果您要基于Qt编写服务或应用程序,则适合使用。它是用C ++编写的。

推荐的低级绑定:

  • sd-bus是一个较低级别的绑定,几乎没有依赖项。如果您正在编写系统服务或系统应用程序,并且未使用GLib或Qt,则是合适的。用C写的。

推荐的绑定:

  • libdbus是官方D-Bus实现随附的较低级别的绑定。它已经很老了,自编写以来,设计D-Bus API的最佳实践已得到改进。建议你 使用libdbus。正如文档所述:“如果您直接使用此低级API,则可能会有些麻烦。” 使用起来很尴尬。用C写的。
  • dbus-glib是与官方D-Bus实施相关的高级绑定。像libdbus一样,它已经很老了,自那时以来,最佳实践一直在发展。建议你 使用的dbus-油腔滑调,并使用GDBus代替。使用起来很尴尬。用C写的。

可以使用其他语言的各种绑定,但是我不确定它们的相对优点(如果有人要编辑此答案以涵盖这些优点,那将是很好的)。



 类似资料:
  • D-BUS是一个提供简单的应用程序互相通讯的途径的自由软件工程,它是做为freedesktop.org项目的一部分来开发的。 D-Bus 深深地受到了DCOP系統的影響而且將在KDE 4版的release中取代DCOP;他已經被實做在Qt4, GNOME,Windows以及 Maemo 行動系統中。GNOME也逐渐的用它来取代了大部分的早期Bonobo机制。 D-Bus 允許程式在其上註冊以提供服

  • 利用D-Bus服务 D-Bus系统是可以匿名访问的,跨进程通讯经常会使用D-Bus系统。我们认为,D-Bus系统本不应该会暴露,所以,我们有点意外,利用D-Bus来运行代码居然是可行的。 获取代码执行 你已经发现了D-Bus服务暴露在了端口6667上,并且这个端口是在Uconnect系统上运行的。所以,我们认为通过不认证办法来执行代码是最好的方式。在一开始的时候,我们就怀疑过这个服务,因为这个服务

  • 问题内容: 我正在尝试获取Ubuntu 10.10中当前插入的USB设备的列表,并监视发生的更改,例如使用UDev和D-BUS插入或拔出的设备。我对使用D- BUS进行编程非常陌生。我看到一个示例:Linux:如何检测到USB键盘是插拔的,只有一个使用HAL并且我知道HAL已弃用。我发现了一些有效的代码,对其进行了一些修改,仅对仅存储设备(例如USB棒,媒体播放器或cd- rom设备)不起作用。我

  • 任务给你一个排序的整数数组arr。它包含几个唯一的整数(负、正或零)。 您的任务是找到最大的d,使得a b c=d,其中a、b、c和d是arr的不同元素。如果没有找到这样的元素d,则返回null。 例子: 对于arr=[2,3,5,7,12],输出应该是12(这个数组正确传递了我的函数) 对于arr=[-100,-1,0,7,101],输出应该是0(这个不通过) 我可以进行正数检查,但我的函数因负

  • 问题内容: 我到处都看到JRE,但是我不确定哪个JDK正在编译我的代码。我如何找到? 问题答案: 实际上,Eclipse有其自己的编译器。您可以仅使用JRE和Eclipse开发Java应用程序

  • 问题内容: 如何从Python脚本(或交互式外壳程序)中找出系统变量中列出了哪些目录? 问题答案: 可能包括不是您的环境变量中特定的项目。要直接查询变量,请使用: