Ich schreibe ein Programm, das mit mmap riesige Speicherblöcke zuweist und dann auf zufällige Speicherplätze zugreift, um darin zu lesen und zu schreiben. Ich habe gerade den folgenden Code ausprobiert:
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
int main() {
int fd,len=1024*1024;
fd=open("hello",O_READ);
char*addr=mmap(0,len,PROT_READ+PROT_WRITE,MAP_SHARED,fd,0);
for(fd=0;fd<len;fd++)
putchar(addr[fd]);
if (addr==MAP_FAILED) {perror("mmap"); exit(1);}
printf("mmap returned %p, which seems readable and writable\n",addr);
munmap(addr,len);
return 0;
}
Aber ich kann dieses Programm nicht ausführen, ist etwas mit meinem Code nicht in Ordnung?