Bob*_*Bob 10 unix macos shared-memory
需要使用IPC在OS X 10.4及更高版本上将大量数据(200kb +)从子进程传递到父进程,我在Unix上读取共享内存,特别是System V和POSIX共享内存机制.然后我意识到mmap()可以与MAP_ANON和MAP_SHARED标志一起使用来做类似的事情(或者只是使用MAP_SHARED标志,如果我不介意正在创建常规文件).
我的问题是,有没有理由不使用mmap()?它似乎更简单,内存仍然是共享的,如果我使用MAP_ANON,它不必创建真实的文件.我可以在父进程中创建文件,然后fork()和exec()子进程并在子进程中使用它.
问题的第二部分是,这种方法不充分的原因是什么,并且必须使用SysV或POSIX共享内存机制?
请注意,我计划使用其他通信所需的管道进行同步,即父级通过管道请求数据,子级将其写入共享内存,并通过管道响应其准备就绪.没有涉及多个读者或作家.便携性不是优先事项.
如果你有父/子关系,那么使用mmap是完全正确的.
sysv_shm是原始的unix实现,它允许相关和不相关的进程共享内存.posix_shm标准化共享内存.
如果你在没有mmap的posix系统上,你可以使用posix_shm.如果你在没有posix_shm的unix上,你会使用sysv_shm.如果您只需要与父/子共享内存,则可以使用mmap(如果可用).
| 归档时间: |
|
| 查看次数: |
8203 次 |
| 最近记录: |