J'essaie d'écrire un programme qui lit un fichier en utilisant 'mmap' pour l'école. J'ai de la difficulté à créer la carte. Plus précisément, je reçois une erreur de segmentation. Je ne suis pas vraiment sûr de ce que je fais mal ici, donc une aide concrète serait appréciée. Je vous remercie.C 'mmap' provoquant une erreur de segmentation. Des idées?
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
int main(int argc, char* argv[])
{
printf("Hello world!\n");
FILE* fp;// File pointer
int fd;// File descriptor
size_t size;// Length of the file
char* map;// File mmap
/* Open the file */
fp = fopen("data.txt", "r+");
/* Get the file descriptor */
fd = fileno(fp);
printf("FD: %d\n", fd);
/* Get the size of the file */
fseek(fp, 0, SEEK_END);
size = ftell(fp);
fseek(fp, 0, SEEK_SET);
printf("SIZE: %d\n", size);
/* Map the file with mmap */
map = mmap(NULL, size, PROT_READ, 0, fd, 0);
if (map == MAP_FAILED)
{
printf("MMAP FAILED\n");
} else {
printf("MMAP SUCEEDED\n");
}
/* Do something with the map */
int i;
for (i = 0; i < size; i++)
{
char c;
c = map[i];
putchar(c);
}
fclose(fp);
return(0);
}
@Jack peut avoir la bonne réponse, mais de poster une question avant les étapes de débogage même triviales comme la vérification 'fopen()' est pas nul me semble juste paresseux. – John3136