【发布时间】:2014-09-30 00:04:22
【问题描述】:
mmap() 如何在不相关的进程之间工作?
如果我在一个进程中对磁盘上的文件进行 mmap,那么稍后会出现一个进程并从 mmap 中打开文件吗?
我看到有一些方法可以在父进程和子进程之间共享,我指的是相互通信但不是父/子的进程。
谢谢
【问题讨论】:
标签: linux ipc shared-memory mmap
mmap() 如何在不相关的进程之间工作?
如果我在一个进程中对磁盘上的文件进行 mmap,那么稍后会出现一个进程并从 mmap 中打开文件吗?
我看到有一些方法可以在父进程和子进程之间共享,我指的是相互通信但不是父/子的进程。
谢谢
【问题讨论】:
标签: linux ipc shared-memory mmap
两个独立的进程可以使用 mmap(2) 共享对保存文件数据的内核磁盘块缓存的访问:
1) 进程 A 打开一个文件,使文件达到所需的大小并在文件中创建一个 mmap(2) 窗口。
2) 进程 B 打开同一个文件并在同一个文件中创建一个 mmap(2) 窗口。
3) 现在,相同的内核块缓存数据同时存在于两个进程中。任何一个进程都可以修改数据,并且该数据在另一个进程中即时可用。
这是 MAP_SHARED 标志旨在提供的问题。
【讨论】:
sync,两个进程是否共享所有更改?
mmap 在您的虚拟地址空间中创建一个新映射。
你说的是什么好处,多解释一下。
process -1 mmap - a.txt
process -2 did not do mmap then it cannot access a.txt unless he opens a.txt using open/FILE and gets a file pointer.
【讨论】: