2 つのプロセスがあり、それぞれがから同じshmid
shmget()
ものを取得できます。
これら 2 つのプロセスでshmat()
は、異なるメモリ アドレスを指定します。
各プロセスのアドレスは常に同じです。
Process1: 0x41b31000
Process2: 0x4017d000
以下の質問に書かれている答えが述べられているように、アドレスは仮想アドレスではないと思います。また、これらのアドレスが仮想アドレスである場合、これらは同じハードウェアアドレスを指している必要があります。ただし、これらのアドレスの内容は同じではありません。
私は ARM プロセッサ用にクロス コンパイルしています。私のプログラムは、x86 Debian Lenny でエラーや問題なく実行されています。
私はその質問を認識していますが、問題はそれほど簡単ではありません-shmat()は同じ「shmkey」に対して別の「shmaddr」を返しています-