2

我的要求是在 32 位和 64 位进程之间提供一个共享内存文件。这个文件可以由任何进程创建,这取决于谁先来。- 我仍然不确定这是否可行,如果可以,以后有什么陷阱吗?- 从 google 获得的一些信息:内存映射文件 32 位应用程序只能共享映射到 32 位虚拟地址空间的内存映射文件。64 位应用程序可以在 32 位或 64 位虚拟地址空间中共享内存映射文件。要将文件映射到可在 64 位和 32 位应用程序之间共享的内存中,您的 64 位应用程序必须在调用 mmap(2) 时使用 MAP_SHARED 标志指定 MAP_ADDR32 标志。网址:http: //docs.hp.com/en/5966-9844/ch02s08.html#d0e3037

这是否意味着对于这种共享,内存映射文件应该由 64 位进程使用给定标志创建?

谢谢

4

1 回答 1

0

我还没有尝试过,但我不明白为什么你不能使用 MAP_SHARED 进行映射,并且让它正常工作。

前提是您不希望单个段对于 32 位进程的地址空间来说太大(考虑到碎片),并且您不希望它在两个进程中映射到相同的地址(这可能是不可能的) ,它应该可以正常工作。

毕竟, mmap() 的效果不依赖于架构(仅依赖于它的实现)

于 2010-11-08T10:29:37.477 回答