进程间通讯之dbus通讯接口说明

本文介绍了一种基于glib-2.0等库的进程间通信(Inter-Process Communication, IPC)方法,包括创建应用、挂接至总线、发送非阻塞及阻塞信息等关键步骤,并提供了具体的使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.移植
依赖glib-2.0 gobject-2.0 gio-2.0 gthread-2.0
libglib2
dbus->expat

二.使用方法,步骤
#define Server_NAME "org.sample.server.Test"

1.创建app
g_ipc_server_handle = nmp_ipc_create(Server_NAME);

2.挂接在总线上
2.1非阻塞信息挂载
ret = nmp_ipc_setup(g_ipc_server_handle, cb_ipc_server, cb_ipc_status, (void*)"server");
cb_ipc_server:接收到其他app发送的非阻塞消息时进入此函数
cb_ipc_status:挂载在总线上时,是成功挂载还是失败
serve:传给cb_ipc_server的参数
2.2需要阻塞信息时需要设置
nmp_ipc_set_blocking_callback(g_ipc_server_handle, cb_ipc_blocking_server);
cb_ipc_blocking_server:接收到其他app发送的阻塞消息时进入此函数		

3.检查总线上当前app(client)和另外一个app(server)能否连上
nmp_ipc_check_connect(g_ipc_client_handle, Server_NAME)
g_ipc_client_handle:当前app的句柄
Server_NAME:总线上是否存在另外一个app	

4.其中一个app(client)发送信息给某个app(server)时
4.1发送非阻塞信息
nmp_ipc_send(g_ipc_client_handle, data, Server_NAME);
data:要发送给server的数据
Server_NAME:要发送给哪个app
4.2发送阻塞信息
nmp_ipc_send_blocking (g_ipc_client_handle, data, Server_NAME, 20*1000, &ret_msg)
data:要发送给server的数据
20*1000:阻塞时长20s
ret_msg:接受到的返回信息		

5.卸载挂载在总线上的app
nmp_ipc_close(g_ipc_server_handle);

三.使用例子
参照sample

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值