我们的应用程序使用多个内存映射文件在多个进程之间进行通信。生产运行在 64 位的 solaris 上,开发机器是 32 位的 linux。将来我们希望在所有环境中使用 64 位 linux。编译已经完成,现在我需要存储在内存映射文件中的数据。不幸的是,如果我使用 32 位 linux 中的文件,我会收到“总线错误”。如果我使用了 64 位 solaris 的文件,进程就会崩溃。
据我了解,发生总线错误是因为 32 位文件中的寻址错误(地址超出文件末尾)。此外,solaris 文件似乎与 linux 系统不兼容。因此,我在 64 位 linux 上创建了新的内存映射文件,并且应用程序可以工作,但显然没有数据。
有没有办法可以在我的新 64 位 linux 系统上读取这些文件的旧版本?我想编写自己的转换程序来提取数据并填充新生成的文件。