我正在研究 POSIX
共享内存。
我不明白内部实现。进程如何共享内存。 我看到一些视频告诉我们进程实际上不共享内存,即如果进程 A 和进程 B 共享某个变量(例如 x),那么进程 A 和 B 中包含 x 的逻辑页面实际上指向同一个帧在主存中,这就是进程共享内存的方式。
我的问题是:
这就是当我们
fork()
进程时发生的情况(正如我上面提到的)? (我的意思是假设进程 A 已经打开了 file1 file2 并且有变量 a,b,c 现在如果进程 A fork 了进程 B ,进程 B 可以访问所有这些文件和变量。)如果不是,那么如何实现该实现?
如果是,那么如何在不相关的进程之间共享内存?
最佳答案
不,这两个进程对所有内容都有自己独立的副本。请注意,这些副本可能不兼容;例如,让两个进程都写入一个公共(public)文件可能会以泪水告终。
你不能;您需要明确分享您想要分享的所有内容。
使用
shm_open
和 friend 。
关于c - C 中的 fork() 和 POSIX 中共享内存的内存表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19278433/