我可以在两个进程之间共享内存而不进行任何传递吗?(Android NDK中)

我可以在两个进程之间共享内存而不进行任何传递吗?(Android NDK中),android,android-ndk,shared-memory,file-descriptor,Android,Android Ndk,Shared Memory,File Descriptor,我的开发环境是带有NDK的Android Studio。对于使用NDK共享mem头,最小SDK级别为26https://developer.android.com/ndk/reference/group/memory 我成功地利用了孩子和父母之间的共同记忆。但问题是,我需要在fork()之前创建文件描述符。下面是我是如何做到的 从父级创建文件描述符(AsharedMemory\u create) fork() 使用父文件描述符从子级映射mmap。在缓冲区上工作一些东西 来自父级的用于同步和获取缓

我的开发环境是带有NDK的Android Studio。对于使用NDK共享mem头,最小SDK级别为26<代码>https://developer.android.com/ndk/reference/group/memory

我成功地利用了孩子和父母之间的共同记忆。但问题是,我需要在
fork()
之前创建文件描述符。下面是我是如何做到的

  • 从父级创建文件描述符(
    AsharedMemory\u create
  • fork()
  • 使用父文件描述符从子级映射mmap。在缓冲区上工作一些东西
  • 来自父级的用于同步和获取缓冲区的mmap
  • 它可以很好地工作,但在使用叉子之前需要事先得到父母的同意。我不想要它。另外,我不想在Java中使用包文件描述符

    我想在任何地方创建共享内存,并与其他进程共享,但不使用pass。有没有一种方法可以在孩子和父母之间使用“相同”的共享记忆?或者在不同的过程之间(比如有孩子的孩子)

    我尝试在子级和父级中为共享内存创建具有相同名称、相同大小的文件描述符,但不起作用。在孩子做了同样的事情后,我还尝试在父母中创建文件描述符和mmap,但它不起作用,即使我没有在孩子中创建munmap或close。我能得到的只是父母或其他孩子的
    NULL
    。这是不可能的吗

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

  • 使fd在儿童中闭合。从家长处打开它(X)
  • 在儿童和睡眠中制造fd。从家长处打开它(X)
  • 在child和msync中生成fd。从家长处打开它(X)

  • 我检查了很多事情,但是无法实现。没有神奇的解决方案。 如果我想使用使用其他进程的FD的共享内存,我需要通过IPC获得FD。另外,android建议Unix域套接字通过fd