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也会做分配(判断错误)
无法在典型硬件上创建只写映射,文件已在没有读取权限的情况下打开。
我的程序使用
创建文件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也会做分配(判断错误)
无法在典型硬件上创建只写映射,文件已在没有读取权限的情况下打开。