0
int main() {
int fd; // File Descriptor for the integer file
int pagesize=getpagesize(); // To store the size of virtual page
printf("\nPage size is %d bytes.\n100 integers require %lu bytes\n",pagesize,100*sizeof(int));
void *data; // This is the pointer which will store the returned pointer when mmap() is called
fd=open("integer", O_RDWR);
data=mmap((caddr_t)0, pagesize, PROT_WRITE | PROT_READ, MAP_SHARED, fd,0);
close(fd);
sprintf((char*)data,"%d",100);
return 0;
}
これは、あなたがopen
とmmap
からのエラーをチェックする必要がありセグメンテーションフォールト11になぜこのセグメンテーションフォルトが発生しますか?
mmap()が失敗したかどうかを確認できます。それがあった場合は、 'perror()'を呼び出すか、 'errno'を調べて失敗した理由を調べます。また、open()が失敗したかどうかを確認する必要があります。 – nos
あなたのファイル「整数」はおそらく存在しません。あなたは適切な長さで最初にそれを作成しなければなりません、長さが0のファイルはしません...もしあなたが 'O_CREAT'でそれを開くなら、mmapping(seek())する前にやります)。 – Ctx