1

ファイルの特定のセクションをメモリにマップしたいのですが、この目的のために mmap() を使用する必要があります。(プロジェクト要件)次のファイルを開きます。

file = open(fileName, O_RDWR, 0)

定期的に開きます (ファイル != -1)。

次に、for() 内で、次のようにマップしようとします。

char *res;
res = (char*)mmap((void*)sectionHeads[i].adr, sectionHeads[i].size, PROT_READ|PROT_WRITE, MAP_ANON|MAP_SHARED, file, sectionHeads[i].offset);

sectionHead には、アドレスの adr(int) などが含まれます。しかし、結果として常に-1になります。確認したところ、メモリのその部分は空いているはずです。私は何を間違っていますか?

注:mmap()を使用するのはこれが初めてです。後でフラグについて考えますが、今は1つのセクションだけをマップしたいだけです。セクションに有効な値が含まれていることを再確認しました。

更新:提案されperror ("mmap error");たように、エラーが何であるかを確認するために電話をかけたところ、 mmap error: Invalid argument. 最初の sectionHeads の adr、size、offset の値は、adr=8154 size=13 offset=154 です。MAP_ANON も捨てました。無効な引数は何ですか? それを見る方法はありますか?

4

1 に答える 1