0

次にやりたいこと: 巨大なファイル (4GB 以上) があります。私はそれをmmapしてから、このmmapされた領域から128バイトのバッファを取得したいと考えています。どうすればできますか?ファイルをmmapするには、これを使用します:

int fd = open(file_name, O_RDONLY);
void* addr = mmap(0, /*ULONG_MAX*/100000000, PROT_READ, MAP_SHARED, fd, 0);

これらの文字列の後、上記のバッファについて説明したいと思いますが、方法がわからず、Web で見つけられませんでした。

追加情報: file_name はテキスト ファイルです。文字列が含まれています

UPD:説明しようとします:ファイルをmmapし、mmapされた領域から128バイト(実際には文字)を取得して、それをいくつかのバッファに入れます。今、私は次のコードを使用します:

char buffer[128];
struct str* addr = mmap(0, /*ULONG_MAX*/128, PROT_READ, MAP_SHARED, fd, 0);
scanf((char*)addr, "%s", buffer);
printf("%s\n", buffer);

しかし、うまくいきません。だから私は解決策を探しています。

4

3 に答える 3