Моя среда разработки - это Android Studio с NDK. Минимальный уровень SDK равен 26 для использования общего заголовка mem NDK. https://developer.android.com/ndk/reference/group/memory
Мне удается использовать общую память между ребенком и родителями. но проблема в том, что мне нужно сделать дескриптор файла до fork()
. Вот как я это сделал.
- Создать дескриптор файла (
AsharedMemory_create
) из родителей.
- вилка ()
- mmap от ребенка с использованием родительского файлового дескриптора. Работайте с буфером.
- mmap от родителей для синхронизации и получения буфера.
Он отлично работает, но его нужно предварительно приготовить от родителей до разветвления. Я не хочу этого Кроме того, я не хочу использовать дескриптор файла Parcel в Java.
Я хочу создать общую память там, где я хочу, и поделиться с другим процессом, но не использовать ее Есть ли способ использовать «одинаковую» общую память между ребенком и родителями? или между разными процессами (такими как ребенок с ребенком)?
Я попытался создать дескриптор файла, который имеет То же имя, тот же размер в потомке и родителях для общей памяти, но это не работает. Также пытался сделать дескриптор файла и mmap у родителей после того, как child сделал то же самое, но это не сработало, даже если я не сделал munmap или не закрылся в child. Все, что я могу получить, это NULL
у родителей или другого ребенка. это просто невозможно?
// ======================== (11.15.2018 Update)
================== ==============
- Создание ФД у ребенка и близких. Открой его от родителей (X)
- Создание ФД у ребенка и сна. Открой его от родителей (X)
- Создание fd в child и msync. Открой его от родителей (X)