Я пытаюсь отобразить файл для чтения и записи, и в настоящее время я получаю код ошибки 19: ENODEV.Я использую пустой файл с 2 МБ свободного места.
Согласно справочным страницам, эта ошибка возникает, когда файл не совместим для сопоставления.Если это правда, я не понимаю, почему;Это просто обычный пустой файл.Кроме того, он был предоставлен моим профессором, поэтому, по-видимому, он должен работать нормально.Что-нибудь еще происходит?
Вот мой код:
#include <stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdlib.h>
#include <errno.h>
int main(int argc, const char * argv[]) {
int fd = open("Drive2MB", O_RDWR, S_IRUSR | S_IWUSR | S_IXUSR);
if(fd < 0) {
printf("open failure\n");
exit(1);
}
char *drive = mmap(NULL, 1048576, PROT_WRITE, fd, MAP_SHARED, 0);
if(drive == MAP_FAILED) {
printf("map failure\n");
fprintf(stderr, "Value of errno: %d\n", errno);
exit(1);
}
//test
drive[513] = 'p';
printf("%c", drive[513]);
}
Если это действительно файл, как бы мне создать файл, совместимый с mmap ().