Sharing file descriptor using Android binder

99封情书 提交于 2019-11-30 17:40:43

问题


How can I share file descriptor across process using Android binder IPC in C++? Can you post example also?


回答1:


In client process we do the following to perform a binder transaction

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

data and reply are of type Parcel. marshall and unmarshalling is done in native android using Parcel objects. It has the functionality to marshall a file descriptor.

data.writeFileDescriptor(fd);

In server process (i.e, Service in android), we call the following method to read the file descriptor in the server process.

int fd = data.readFileDescriptor();

sharing the file descriptor across process will be handled by the binder driver.

Important : duplicate the received file descriptor before the parcel object is destroyed.

You can find the implementation and explanation for native binder at Android-HelloWorldService



来源:https://stackoverflow.com/questions/14413810/sharing-file-descriptor-using-android-binder

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!