问题标签 [dbus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dbus - hal 属性什么时候更新
我在 PropertyNotified 信号期间从我的处理程序调用 org.freedesktop.Hal.Device 上的 GetProperty。我只对已添加或更改的属性调用 GetProperty。
当我在属性添加期间调用 GetProperty 时,我得到一个 org.freedesktop.Hal.NoSuchProperty 异常。我还担心在更改期间,我会获得旧值。
我应该什么时候调用 GetProperty?涉及哪些竞赛条件?
linux - 暂时防止linux关机
我有一个备份脚本,每天在我的 linux (Fedora 9) 计算机上运行。如果在备份过程中关闭计算机,则备份可能已损坏,因此我想编写一个小脚本,暂时禁用用户重新启动或关闭计算机的能力。
脚本不一定是不可绕过的,只是让系统的用户知道备份正在进行中,他们不应该关闭。我在 DBus Free 桌面电源管理规范中看到了 Inhibit 方法:http: //people.freedesktop.org/~hughsient/temp/power-management-spec-0.3.html 但这只会在系统空闲时防止关机未明确应用户要求。
有没有一种简单的方法可以在 C/Python/Perl 或 bash 中做到这一点?
更新:为了澄清上面的问题,它是一台有多个用户的机器,但他们通过插入的键盘/鼠标顺序使用它。我不是在寻找一个可以阻止我以 root 身份“破解”它的系统。但是当我从 Gnome/GDM 菜单中选择关闭时,一个脚本会提醒我(或其他用户)备份仍在运行
ipc - D-Bus 可以在不是 Unix 域套接字的流上使用吗?
我在一个项目中使用 DBus。我从 DBus 规范中了解到,对于低级通信,它使用 Unix 域套接字。我不想使用 Unix 域套接字进行低级通信,因为我有一个修改后的connect()
调用。是否有任何其他类型的 DBus 支持但不使用的低级通信connect()
?如果是,那么如何切换到该模式?
windows - 适用于 Windows 的 D-Bus 等效项
有人知道 Windows 的 Linux/D-Bus 机制吗?
谢谢
python - 如何为用 Python 编写的 DBUS 服务编写功能测试?
(标题是:“如何为用 Python 编写的 DBUS 服务编写单元测试?”)
我已经开始使用 dbus-python 编写 DBUS 服务,但是我在为它编写测试用例时遇到了麻烦。
这是我正在尝试创建的测试示例。请注意,我在 setUp() 中放置了一个 GLib 事件循环,这就是问题所在:
我的问题是 DBUS 实现需要您启动一个事件循环,以便它可以开始调度事件。常见的方法是使用 GLib 的 gobject.MainLoop().start() (虽然我不喜欢这种方法,如果有人有更好的建议)。如果您不启动事件循环,服务仍然会阻塞,您也无法查询它。
如果我在测试中启动我的服务,事件循环会阻止测试完成。我知道该服务正在运行,因为我可以使用 qdbus 工具从外部查询该服务,但我无法在启动它的测试中自动执行此操作。
我正在考虑在测试中进行某种进程分叉来处理这个问题,但我希望有人可能有一个更简洁的解决方案,或者至少是我编写这样一个测试的一个好的起点。
linux - D-Bus 的底层传输是什么?
D-Bus 允许程序进行通信。这个IPC是如何实现的?Unix域套接字,共享内存+信号量,命名管道,还有什么?也许是一个组合?
python - 如何创建动态创建多个对象的 D-Bus 服务?
我是 D-Bus 的新手(以及 Python 的新手,双重打击!),我正在尝试找出做本教程中讨论的事情的最佳方法。
但是,文本编辑器应用程序可以很容易地拥有多个总线名称(例如,除了通用 TextEditor 之外,org.kde.KWrite),具有多个对象(可能 /org/kde/documents/4352,其中编号根据文档而变化),并且每个对象可以实现多个接口,例如 org.freedesktop.DBus.Introspectable、org.freedesktop.BasicTextField、org.kde.RichTextDocument。
例如,假设我想创建一个包装器flickrapi
,以便服务可以公开一些 Flickr API 方法(例如,urls_lookupGroup()
)。如果我想假设该服务将始终指定相同的 API 密钥并且验证信息对于使用该服务的每个人来说都是相同的,那么这相对简单。
尤其是在后一种情况下,我不能真正假设这是真的。
根据上面引用的文档,我假设应该是这样的:
所以,我的问题:
1)这是应该如何处理的?
2)如果是这样,服务如何知道客户端何时完成?有没有办法检测当前客户端是否断开连接,以便服务可以清理其动态创建的对象?另外,我将如何首先创建单个对象?
3)如果这不是应该如何处理的,还有什么其他建议可以完成类似的事情?
我已经阅读了许多 D-Bus 教程和各种文档,并且我最接近看到我正在寻找的内容是我上面引用的内容。然而,没有一个例子看起来真的做这样的事情,所以我不知道如何继续。
python - 如何以 HAL 可以检索但不需要安装或更改标签的方式标记设备
我正在尝试找到一种方法来标记 USB 闪存设备,这种方法无需安装或更改标签即可以编程方式进行测试。
是否有任何我可以修改的关于设备的属性不会导致其行为/外观对用户有所不同?
运行 Ubuntu Jaunty。
linux - 什么是让 D-Bus 之类的东西在多台 Linux 机器上工作的好方法,可能是通过防火墙?
D -Bus 规范说
D-Bus 是.. 应用程序相互通信的一种简单方式... 目前通信应用程序在一台计算机上...
我想要像 D-Bus 这样的东西,但可以跨多台 Linux 机器工作,并且可能涉及防火墙。例如,如果我的邮件服务器决定它收到一条重要消息,我希望它向总线上发布一个事件,我家中的计算机可以看到并可能通过启动一个linpopup
窗口来响应。
我感兴趣的事件相对较少,所以低性能的技术是可以的。但我不希望重新发明任何轮子。我还希望尽可能多地用 shell 脚本或其他高级语言编写,而尽可能少地用 C 语言编写(但如果需要的话,我愿意调用 C API)。
我解释 D-Bus 官方网页的方式,他们说让 D-Bus 与多台计算机通信会很好,但它不起作用。
编辑:D-Bus 对我的吸引力在于发布和订阅的模型:
观察有趣事件的机器将该事件发布到“系统”。
对特定事件感到好奇的机器只订阅这些事件。当事件发生时,“系统”会让机器知道。
在 D-Bus 中,“系统”是一台机器。我想要多台机器类似的东西。这排除了直接解决方案,如机器之间的 TCP 或 SMTP 通信。但我很高兴拥有一个接收所有发布和订阅请求的中央服务器。我开始认为自己构建比理解高级消息队列协议 (AMQCP)更容易,这对于我这样的人来说太高级了。
性能不是问题。简单绝对是一个对象。
再一次:我应该看什么软件?