问题背景
基于SharedArray库,可以实现python多进程共享内存机制。问题在于,当内存初始化完成之后,我们希望这片内存的属性是只读的,而不希望看到意外的修改发生。
解决方案
解决方案是修改SharedArray库,库函数API attach成员提供的参数原先只有一个,即共享内存的文件名。通过修改attach的输入参数,可以允许用户将映射的内存指定为只读属性。这里面最关键的是mmap函数,attach函数内部调用mmap函数,原先的实现是将读写属性固定为允许读写。我们只需要略加修改,允许根据用户指定的参数来配置mmap,就可以达到内存区只读的目的。
测试结果
实测的结果是,将共享内存设置为read only之后,程序对于该内存的写操作会触发segment fault。
本文探讨了使用SharedArray库在Python多进程中实现共享内存只读属性的方法。通过修改attach函数参数,使内存映射为只读,防止意外修改。实测结果表明,此设置下对共享内存的写操作会触发segmentfault。

6927

被折叠的 条评论
为什么被折叠?



