mmap MAP_SHARED无效

时间:2013-12-14 01:49:30

标签: c file unix mmap

我正在尝试使用mmap打开文件: 它在使用MAP_PRIVATE时工作正常,但MAP_SHARED导致无效的参数错误: mmap的文件是读/写

int size;
struct stat s;
const char * file_name = argv[1];
int fd = open (argv[1], O_RDWR);
int pagesize = sysconf(_SC_PAGE_SIZE);

/* Get the size of the file. */
int status = fstat (fd, & s);
size = s.st_size;
size += pagesize-(size%pagesize);

//mmap memory
d = mmap (0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
//error handeling
if(d == -1)
{
    perror("mmap");
    printf("Error opening file %s\n",argv[1]);
    return -1;
}

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我发现错误的原因是我在VM(Parallels)中使用Ubuntu Linux时在我的本机系统上运行代码一切正常。似乎Parallels没有在它的文件系统驱动程序中实现这种内存修改......

这个问题给了我很多帮助: Invalid argument for read-write mmap?