mmap 对新创建的文件失败

mmap fails for newly created file

我的程序使用

创建文件
HANDLE_ERROR(fd = open(path/to/file,O_WRONLY|O_CREAT,0640)))

映射它

uint8_t *output_file_addr = (uint8_t *)mmap ( NULL, size , PROT_WRITE, MAP_SHARED, fd, 0 )
if(output_dic_addr == MAP_FAILED){  
        fprintf(stderr,"%s\n",strerror(errno));
        exit(EXIT_FAILURE);
    }

mmap 响应权限被拒绝

问题通过使用posix_fallocate(...)为文件定位space来解决.

我以为mmap也会做分配(判断错误)

无法在典型硬件上创建只写映射,文件已在没有读取权限的情况下打开。