我可以在没有任何传递的情况下在 2 个进程之间共享内存吗? (在 Android NDK 中)
Can I Share memory between 2 process without any passing? (In Android NDK)
我的开发环境是 Android Studio with NDK。最小 SDK 级别为 26 以使用 NDK 共享内存 header。 https://developer.android.com/ndk/reference/group/memory
我成功地在 child 和 parents 之间使用了共享内存。但问题是,我需要在 fork()
之前创建文件描述符。以下是我的做法。
- 从 parents.
创建文件描述符 (AsharedMemory_create
)
- fork()
- mmap 来自 child 使用 parents 文件描述符。在缓冲区上处理一些东西。
- 来自 parents 的 mmap 用于同步并获取缓冲区。
它工作正常,但它需要在 fork 之前从 parents pre-make。我不想要它。另外,我不想在 Java.
中使用 Parcel 文件描述符
我想在任何地方创建共享内存并与其他进程共享但不使用传递它。有没有办法在 child 和 parents 之间使用 'same' 共享内存?或不同进程之间(类似于 child 和 child)?
我尝试在 child 和 parents 中为共享内存创建具有 相同名称、相同大小 的文件描述符,但它不起作用。在 child 做了同样的事情之后,还尝试在 parents 中创建文件描述符和 mmap,但即使我没有在 child 中进行 munmap 或关闭,它也不起作用。我所能得到的只是 parents 或其他 child 中的 NULL
。这是不可能的吗?
//========================(11.15.2018 Update)
============== ==================
- 在 child 中创建 fd 并关闭。从 parents (X)
打开
- 在 child 中进行 fd 和睡眠。从 parents (X)
打开
- 在 child 和 msync 中创建 fd。从 parents (X)
打开
我检查了很多东西,但它无法实现。没有神奇的解决方案。
如果我想使用使用其他进程的 FD 的共享内存,我需要通过 IPC 获取 FD。另外android建议Unix域套接字传递fd。
我的开发环境是 Android Studio with NDK。最小 SDK 级别为 26 以使用 NDK 共享内存 header。 https://developer.android.com/ndk/reference/group/memory
我成功地在 child 和 parents 之间使用了共享内存。但问题是,我需要在 fork()
之前创建文件描述符。以下是我的做法。
- 从 parents. 创建文件描述符 (
- fork()
- mmap 来自 child 使用 parents 文件描述符。在缓冲区上处理一些东西。
- 来自 parents 的 mmap 用于同步并获取缓冲区。
AsharedMemory_create
)
它工作正常,但它需要在 fork 之前从 parents pre-make。我不想要它。另外,我不想在 Java.
中使用 Parcel 文件描述符我想在任何地方创建共享内存并与其他进程共享但不使用传递它。有没有办法在 child 和 parents 之间使用 'same' 共享内存?或不同进程之间(类似于 child 和 child)?
我尝试在 child 和 parents 中为共享内存创建具有 相同名称、相同大小 的文件描述符,但它不起作用。在 child 做了同样的事情之后,还尝试在 parents 中创建文件描述符和 mmap,但即使我没有在 child 中进行 munmap 或关闭,它也不起作用。我所能得到的只是 parents 或其他 child 中的 NULL
。这是不可能的吗?
//========================(11.15.2018 Update)
============== ==================
- 在 child 中创建 fd 并关闭。从 parents (X) 打开
- 在 child 中进行 fd 和睡眠。从 parents (X) 打开
- 在 child 和 msync 中创建 fd。从 parents (X) 打开
我检查了很多东西,但它无法实现。没有神奇的解决方案。 如果我想使用使用其他进程的 FD 的共享内存,我需要通过 IPC 获取 FD。另外android建议Unix域套接字传递fd。