Android原生库共享内存
Android native library shared memory
我正在编写本机共享库,需要Android支持,并且我需要在使用此库的所有进程之间共享一些数据(UID和一些附加字段)。在Linux中这样做的好机会是POSIX共享内存。但是Android NDK不支持POSIX共享内存。有ashmem,但是为了从其他进程访问共享内存区域,我需要使用绑定IPC来传输打开的文件描述符。但这不是
这是合理的,因为创建区域的进程可能会在其他进程想要访问共享数据时被终止。
有没有办法解决我的问题与Android共享内存?
首先,您不需要Binder,您可以通过Unix本地套接字使用sendmsg()和recvmsg()传递文件描述符。例如,参见[1]
中的SendFd()和ReceiveFd()函数。第二个ashmem区域是引用计数的,只要在ashmem区域上打开一个文件描述符,它就不会消失,即使创建的进程被杀死。
希望对你有帮助。
[1] https://android.googlesource.com/platform/ndk/+/主/资源/android/crazy_linker/测试/test_util.h
相关文章:
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 使用Boost Interprocess创建托管共享内存需要很长时间
- 多个"常量引用"变量可以共享同一个内存吗?
- 使用共享指针时,从共享指针本身释放内存的机制是什么
- 字符串共享内存映射的向量
- CUDA 使用共享内存平铺 3D 卷积实现
- 共享内存:MapViewOfFile 返回错误 5
- 在共享缓冲区内存中创建 ::std::string 对象
- 如何在多写入器情况下对文件支持的共享内存中的大页面出错
- Directx 12 :在两个进程之间共享图形内存
- 有没有办法列出所有共享内存对象的名称?
- 子进程更新共享 mmap 内存,但父进程没有更改
- C++线程之间的内存共享
- 使用Windows共享内存共享小数据
- 更有效地使用fork()和写时复制内存共享
- 从托管代码到非托管代码跨共享内存共享整数数组
- 通过内存共享c++对象
- 内存共享;继承;基实例和派生实例;c++
- Matlab与c++在MEX中的内存共享
- 跨共享内存共享 std::字符串