我試圖做一個新的文本文件(作爲參數給出)的簡單映射,我在mmap調用中遇到ENODEV錯誤。 fd沒問題(打開電話時沒有錯誤)。MMAP中的ENODEV錯誤
根據文檔,此錯誤表示「指定文件的底層文件系統不支持內存映射。」或者從其他來源發現,它可能意味着fd是特殊文件(可能用於映射I/O或設備內存的文件)的文件描述符。我不明白爲什麼會有這些原因。
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#define SIZE1 10240
int main(int argc, char *argv[]){
char *addr;
int fd;
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
if(fd = open(argv[1], O_RDWR | O_CREAT | O_TRUNC, mode) == -1){
printf("error @ open\n");
}
addr = (char*) mmap(NULL, SIZE1, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
...
munmap(addr, SIZE1);
return 0;
}
argv [1]的值.. ??? –
這是文件的名稱,作爲參數 – ednincer