dbus c api示例不起作用

时间:2014-02-06 16:39:31

标签: c ubuntu-12.04 dbus

我在UBuntu 12.04 LTS上工作。我正在尝试使用sendignal并从此site接收函数,但它们无法正常工作。在我的程序中,我首先调用sentignal(“mySignal”)然后接收()。我得到以下信息:

Sending signal with value mySignal
Name Error(Connection ":1.95" is not allowed to own the service "test.signal.source" due to security policies in the configuration file)

因此我在两个函数中都将conn = dbus_bus_get(DBUS_BUS_SYSTEM, &err);替换为conn = dbus_bus_get(DBUS_BUS_SESSION, &err);。现在发送信号但接收功能没有看到该信号,即NULL == msg这是真的。由于以下错误,我还评论了dbus_connection_close(conn);

process 12612: Applications must not close shared connections - see dbus_connection_close() docs. This is a bug in the application.

如何让它运作?

1 个答案:

答案 0 :(得分:1)

也许试试:

  • 在终端中运行dbus-launch。将终端输出复制并粘贴到文件中,然后对其进行编辑以将内容导出为环境变量。通过执行此操作,您将启动一个新的dbus守护程序并将其公开给后续应用程序。

  • 在运行信号发送和接收示例之前,请在终端中获取环境设置文件。这使得应用程序连接到新的会话总线。

我猜你的发送示例正在启动自己的dbus守护程序,但是另一个应用程序并不知道该守护程序是什么,因此您需要通过env变量公开守护程序。另一个可能的原因是您的发送和接收应用程序正在使用defaule登录会话总线,但该策略不允许它们使用。

让我们知道这是否有效。