簡體   English   中英

使用從Solaris 64位或Linux 32位到Linux 64位的內存映射文件

[英]Use memory mapped files from Solaris 64 Bit or Linux 32 Bit to Linux 64 Bit

我們的應用程序使用多個內存映射文件在多個進程之間進行通信。 生產在64位的solaris上運行,開發機是32位的linux。 將來,我們希望在所有環境中使用64位linux。 編譯已經完成,現在我需要存儲在內存映射文件中的數據。 不幸的是,如果我使用32位linux中的文件,則會收到“總線錯誤”。 如果我使用了64位solaris的文件,則該過程將崩潰。

據我了解,總線錯誤的發生是由於32位文件中的地址錯誤(地址超出文件末尾)。 另外,solaris文件似乎與linux系統不兼容。 因此,我在64位linux上創建了新的內存映射文件,該應用程序可以運行,但顯然沒有數據。

有沒有辦法可以在新的64位linux系統上讀取這些文件的舊版本? 我想編寫自己的轉換程序以提取數據並填充新生成的文件。

崩潰的原因是,您將文件加載到內存中,然后嘗試使用不同的數據結構進行訪問- 即使它們在源代碼中看起來相同,它們在運行時也不相同 ,而不是針對不同體系結構進行編譯時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM