LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 834|回复: 4

请教一个进程间通讯问题,有关dbus的,谢谢

[复制链接]
发表于 2010-5-12 15:13:29 | 显示全部楼层 |阅读模式
现在遇到一个问题,一个以root权限启动的程序由于无法链接session bus而获取信息失败。

1) 请问,root权限的程序可以伪装作为普通用户程序来链接其session bus吗,我搜索一通后发现有人说可以提前设置环境变量DBUS_SESSION_BUS_ADDRESS,但我的尝试却失败了,提示还是说cannot connect to the session bus......

2) 后来想再换个方法,借用一个中间程序,让它以普通用户权限启动做server,然后利用dbus或者其他方式通讯提交信息给root权限启动的程序,我需要传递的是一个GList类型的,请问在dbus中要如何处理呢,我找到一个简单例子是传递int型的,不知道像GList这样的属于哪种?  

3) 还有如果我只是为了传递这个GList的数据,可以使用管道吗?  还是不很明白,请教了。
发表于 2010-5-12 15:46:47 | 显示全部楼层
GLib 2.24提供了GDBus和GVariant,你可以参考。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-12 17:24:54 | 显示全部楼层
Post by realtang;2089602
GLib 2.24提供了GDBus和GVariant,你可以参考。


谢谢回复。

请问你的意思是GLib是要作为GVariant? 我没查到GVariant有关的东西,找到一个GValue,不知道是不是类似的。

我之前找到的简单测试程序就是应用了GDBus的,里面有个xml文件,如下

<?xml version="1.0" encoding="UTF-8" ?>

<node name="/">
  <interface name="org.test.Test.Basic">
    <method name="Add">
       <arg name="arg0" type="i"/>
       <arg name="arg1" type="i"/>
       <arg name="ret" type="i" direction="out"/>
    </method>
  </interface>
</node>

如果我想把ret改为GList类型,那type那儿要写什么?  o ,v还是 r?还是其他的什么呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-12 17:29:37 | 显示全部楼层
还有请问GList 类型可以转为GSList类型吗?
回复 支持 反对

使用道具 举报

发表于 2010-5-12 23:47:52 | 显示全部楼层
阅读一下glib源码,应该有所获。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表