【发布时间】:2013-01-03 01:00:39
【问题描述】:
如何在 C++ 中使用 Android binder IPC 跨进程共享文件描述符?你也可以发布示例吗?
【问题讨论】:
如何在 C++ 中使用 Android binder IPC 跨进程共享文件描述符?你也可以发布示例吗?
【问题讨论】:
在客户端进程中,我们执行以下操作来执行绑定事务
remote()->transact(MYTRANSACTION, data, &reply, IBinder::FLAG_ONEWAY);
数据和回复是包裹类型。编组和解组是在原生 android 中使用 Parcel 对象完成的。它具有编组文件描述符的功能。
data.writeFileDescriptor(fd);
在服务器进程(即android中的Service)中,我们调用如下方法 在服务器进程中读取文件描述符。
int fd = data.readFileDescriptor();
跨进程共享文件描述符将由 binder 驱动程序处理。
重要:在parcel对象被销毁之前复制接收到的文件描述符。
您可以在以下位置找到本机绑定器的实现和解释 Android-HelloWorldService
【讨论】: