我正在尝试使用匿名 mmap 在 python 进程和从 python 进程启动的 nodejs 进程之间共享内存。本质上,python 进程开始,初始化 mmap 并使用 call 或 Popen 启动子进程来启动运行某些节点代码的子进程。此nodejs代码使用mmap来尝试访问内存中的同一区域。但是我得到两个不同的映射,并且它们之间没有共享数据。为什么是这样?
import mmap, math, os
from subprocess import call
mm = mmap.mmap( -1, 1024,
flags=mmap.MAP_SHARED | mmap.MAP_ANONYMOUS,
prot= mmap.PROT_READ | mmap.PROT_WRITE )
mm.seek(0)
mm.write('hello world!\n'.encode('utf-8'))
call([
'node', '-e',
"""
const mmap = require('mmap.js');
const fileBuf = mmap.alloc(
1024,
mmap.PROT_READ | mmap.PROT_WRITE,
mmap.MAP_SHARED| mmap.MAP_ANONYMOUS,
-1,
0
)
console.log(fileBuf.toString('utf-8'));
"""
])
我使用的 mmap.js 是原始 mmap c 函数的 NAPI。这是该库的 github。
白板的微信
智慧大石
相关分类