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;
}
Dies gibt einen Segmentation Fault 11Warum bekomme ich diesen Segmentierungsfehler?
Sie könnten überprüfen, ob mmap() fehlgeschlagen ist. Wenn dies der Fall ist, rufen Sie 'perror()' auf oder prüfen Sie anderweitig 'errno', um zu erfahren, warum es fehlgeschlagen ist. Sie müssen auch überprüfen, ob open() fehlgeschlagen ist. – nos
Ihre Datei "Integer" existiert wahrscheinlich nicht; Sie müssen es zuerst mit einer geeigneten Länge erstellen, eine Datei mit der Länge Null reicht nicht aus ... Wenn Sie es mit 'O_CREAT' öffnen, schreiben Sie einige (genug für Ihre Daten) Bytes, bevor Sie mmapping (seek() ing wird auch tun). – Ctx