5

如何在 C++ 中使用 Android binder IPC 跨进程共享文件描述符?您也可以发布示例吗?

4

1 回答 1

7

在客户端进程中,我们执行以下操作来执行绑定事务

remote()->transact(MYTRANSACTION, data, &reply, IBinder::FLAG_ONEWAY);

data 和 reply 是 Parcel 类型的。编组和解组是在原生 android 中使用 Parcel 对象完成的。它具有编组文件描述符的功能。

data.writeFileDescriptor(fd);

在服务端进程(即android中的Service)中,我们调用下面的方法来读取服务端进程中的文件描述符。

int fd = data.readFileDescriptor();

跨进程共享文件描述符将由binder 驱动程序处理。

重要:在包裹对象被销毁之前复制接收到的文件描述符。

你可以在Android-HelloWorldService找到原生绑定器的实现和解释

于 2013-02-06T07:58:49.773 回答