对DBus感到困惑

时间:2013-06-24 08:22:04

标签: python dbus

好的,所以,我可能会错过这里的情节,但是真的想要一些帮助。我对开发等很陌生,现在我需要实现DBus(或其他一些程序间通信)。我发现这个概念有点难以理解。

我的实现将是使用HTML网站来更改要在另一个程序中使用的某些变量,从而允许程序在其工作中动态更改。我使用Raspbian在树莓PI上做这个。我正在运行一个网络服务器来托管我的网站,这就是混乱的地方。

据我了解,DBus运行的服务允许您从另一个程序中的程序调用方法。那么这是否意味着我的网站需要运行DBUS服务以允许我将方法调用到我的程序中?为了使事情复杂化,我在Python编码,所以我不确定我是否可以在我的网站上运行一个允许我运行DBUS服务的Python脚本。使用JavaScript会更好吗?

对我来说,最合乎逻辑的解决方案是运行单个DBUS服务,该服务以某种方式从不同程序导入方法,并且可以由想要运行这些方法的其他人查询。这可能吗?

帮助将不胜感激! 提前谢谢!

2 个答案:

答案 0 :(得分:1)

  • 这是否意味着我的网站需要运行DBUS服务 允许我将方法调用到我的程序中吗?

dbus后台进程(守护进程)将在您的Web服务器上运行,是的。 实际上dbus提供了两个守护进程。一个是允许的系统守护进程 对象接收系统信息(例如打印机可用性) 第二个是应用程序IPC守护程序的通用用户应用程序。它是 第二个守护进程,你肯定用于不同的应用程序进行通信。

  • 我在Python编码,所以我不确定我是否可以运行Python脚本 在我的网站上,我可以运行DBUS服务。

使用python没有问题; dbus具有许多语言的绑定(例如Java,perl,ruby,c ++,Python)。 dbus对象可以映射到python对象。

  • 最合乎逻辑的解决方案是运行单个DBUS服务 以某种方式从不同的程序导入方法,可以通过查询 其他想要运行这些方法的人。那可能吗?

正确 - dbus提供了一种机制,通过该机制,客户端进程将创建dbus对象或对象,从而允许该进程通过其他服务进行其他dbus感知进程。

答案 1 :(得分:0)

这听起来像你应该编写一个隔离的D-Bus服务来充当数据存储区,并在脚本中与它同步通信以写入和读取值。您可以使用shelve在服务调用之间保留值。

tutorial中,“制作方法调用”部分涵盖同步调用,“导出对象”包括编写大部分D-Bus服务。