linux - 不相关进程之间的 mmap 文件

标签 linux ipc shared-memory mmap

mmap() 如何在不相关的进程之间工作?

如果我在一个进程中对磁盘上的文件进行 mmap,那么稍后会出现一个进程并打开该文件并从 mmap 中受益吗?

我看到有一些方法可以在父进程和子进程之间共享,我指的是相互通信但不是父/子进程的进程。

谢谢

最佳答案

两个独立的进程可以使用 mmap(2) 共享对保存文件数据的内核磁盘 block 缓存的访问:

1) 进程 A 打开一个文件,使文件达到所需的大小并在文件中创建一个 mmap(2) 窗口。

2) 进程 B 打开同一个文件并在同一个文件中创建一个 mmap(2) 窗口。

3) 现在,相同的内核 block 缓存数据同时存在于两个进程中。任何一个进程都可以修改数据,并且该数据在另一个进程中即时可用。

这就是 MAP_SHARED 标志旨在提供的问题。

关于linux - 不相关进程之间的 mmap 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25170795/

相关文章:

linux - 如何获取文件仍然为 ftp 打开的信息

Python IPC 一对多

c - 安全地初始化共享内存

linux - 是否可以将 elf header 中的默认虚拟地址更改为 0?

javascript - 我如何在 Rhino 中输出一些东西?

python - 如何在制表符分隔的管道输出的第一列上进行 grep?子集?

java - Java 和 C 不用套接字进行通信?

c - 如何重定向由 fork() 创建的子进程的 IO 并使用 exec() 函数?

c - 连接到共享内存的不同部分无法正常工作

ios - Kotlin/Native - 非法尝试访问非共享 <object>