gpt4 book ai didi

android - 我可以在没有任何传递的情况下在 2 个进程之间共享内存吗? (在安卓 NDK 中)

转载 作者:行者123 更新时间:2023-11-29 02:24:24 27 4
gpt4 key购买 nike

我的开发环境是带有 NDK 的 Android Studio。最小 SDK 级别为 26 以使用 NDK 共享内存 header 。 https://developer.android.com/ndk/reference/group/memory

我成功地使用了 child 和 parent 之间的共享内存。但问题是,我需要在 fork() 之前创建文件描述符。以下是我是如何做到的。

  1. 从父级创建文件描述符(AsharedMemory_create)。
  2. fork()
  3. 使用父文件描述符从子文件映射。在缓冲区上处理一些东西。
  4. 来自 parent 的 mmap 用于同步并获取缓冲区。

它工作正常,但它需要在 fork 之前从 parent 那里预先制作。我不想要它。另外,我不想在 Java 中使用 Parcel 文件描述符。

我想在任何我想要的地方创建共享内存并与其他进程共享但不使用传递它。有没有办法在 child 和 parent 之间使用“相同”的共享内存?还是在不同进程之间(比如 child 和 child )?

我尝试在子进程和父进程中创建具有相同名称、相同大小 的文件描述符以共享内存,但它不起作用。还尝试在 child 做同样的事情后在 parent 中制作文件描述符和 mmap,但即使我没有 munmap 或关闭 child ,它也不起作用。我所能得到的只是 parent 或其他 child 的 NULL。这是不可能的吗?

//========================(11.15.2018 更新)======== ========================

  1. 在 child 中创建 fd 并关闭。从 parent 那里打开(X)
  2. 让 child 恢复正常并休眠。从 parent 那里打开(X)
  3. 在 child 和 msync 中创建 fd。从 parent 那里打开(X)

最佳答案

我检查了很多东西,但无法实现。没有神奇的解决方案。如果我想使用使用其他进程的 FD 的共享内存,我需要通过 IPC 获取 FD。 android 也建议 Unix Domain Socket 传递 fd。

关于android - 我可以在没有任何传递的情况下在 2 个进程之间共享内存吗? (在安卓 NDK 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53142275/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com