c - dbus c api 示例不起作用

标签 c ubuntu-12.04 dbus

我在 UBuntu 12.04 LTS 上工作。我正在尝试使用发送信号并从此 site 接收函数但它们不能正常工作。在我的程序中,我首先调用 sendsignal("mySignal),然后调用 receive()。我得到以下信息:

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.

如何让它工作?

最佳答案

也许试试:

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

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

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

让我们知道这是否有效。

关于c - dbus c api 示例不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21608745/

相关文章:

python - D-Bus python PyQt5 服务示例

c++ - 在应用程序之间共享数据——共享内存与 D-Bus 与文件操作

c - 如何在结构中存储当前系统日期?

c - 使用 C 的 Windows 进程间通信 (IPC)

linux - 如何制作 ubuntu 可执行文件并在我的安装文件中运行它

c - 在 ubuntu 12.04 LTS 上安装 qt4-make

c - 如何编码(marshal) dbus 字符串数组 (ao) 类型?

c - MISRA 2004 要求规则 10.1,禁止隐式转换 : Non-constant argument to function

比较C中的String,每个元素都是指向字符串的指针

titanium - 如何在 Ubuntu 上安装 Titanium Studio?