このアプリケーションは、複数のメモリ マップ ファイルを使用して、複数のプロセス間で通信します。プロダクションは 64 ビットの solaris で実行され、開発マシンは 32 ビットの Linux です。将来的には、すべての環境で 64 ビット Linux を使用したいと考えています。コンパイルはすでに終了しており、メモリ マップ ファイルに格納されているデータが必要です。残念ながら、32 ビット Linux のファイルを使用すると、「バス エラー」が発生します。64 ビットの solaris のファイルを使用した場合、プロセスがクラッシュしました。
私が理解している限りでは、バス エラーは 32 ビット ファイルのアドレッシング エラー (ファイルの末尾を超えるアドレス) が原因で発生します。さらに、solaris ファイルは Linux システムと互換性がないようです。したがって、64ビットLinuxで新しいメモリマップファイルを作成しました。アプリケーションは動作しますが、明らかにデータがありません。
新しい 64 ビット Linux システムでこれらのファイルの古いバージョンを読み取る方法はありますか? データを抽出し、新しく生成されたファイルを埋めるために、独自の変換プログラムを作成したいと思います。