Я пытаюсь написать программу, которая читает файл, используя «mmap» для школы. Мне сложно создать карту. В частности, я получаю ошибку сегментации. Я не совсем уверен, что я делаю неправильно здесь, поэтому какая-то конкретная помощь будет оценена по достоинству. Спасибо.C 'mmap' вызывает ошибку сегментации. Идеи?
#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 может иметь правильный ответ, но опубликовав вопрос еще до тривиальных шагов отладки как проверка 'FOPEN()' не пустой кажется мне просто лень. – John3136