正確にどのように機能するかを確認するためだけに、C で mmap を使用しようとしています。現在、mmap を使用してバイナリ ファイルをバイト単位で読み取ろうとしています。私のコードは次のようなものです:
#include <unistd.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
int main(int argc, char *argv[]) {
int fd;
char *data;
for ( int i = 1; i<argc; i++)
{
if(strcmp(argv[i],"-i")==0)
fd = open(argv[i+1],O_RDONLY);
}
data = mmap(NULL, 4000, PROT_READ, MAP_SHARED, fd, 8000);
int i = 0;
notation = data [i];
// ......
}
notation = data[0] を試して segfault を取得すると、問題が発生します。バイナリ ファイルの最初のバイトも文字であると確信しています。私の for ループは、コンパイル中に -i フラグがあるかどうかをチェックします。次の引数がある場合は、ファイル名にする必要があります。