Это мой код:В C mmap файл для записи: Permission denied. Linux
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
int main()
{
int fd=open("/home/victor/hello",O_WRONLY);
if(fd<0)
{
perror("Open");
exit(EXIT_FAILURE);
}
struct stat sbuf;
if(fstat(fd, &sbuf)==-1){
perror("stat");
close(fd);
exit(EXIT_FAILURE);
}
void* file_memory= mmap(NULL, sbuf.st_size, PROT_WRITE, MAP_SHARED,fd,0);
if (file_memory == MAP_FAILED) {
perror("Error mmapping the file");
close(fd);
exit(EXIT_FAILURE);
}
return 0;
}
Я попытался это слишком
int fd=open("/home/victor/hello",O_WRONLY|0777);
, но это та же ошибка:
Ошибка mmapping файл: Отказано в
Doing ls -l | grep hola -rwxrwxrwx 1 victor victor 24 окт 24 01:47 привет
Что случилось?
AFAIK 'ттар()' ' 'ы PROT_WRITE' может подразумевают 'PROT_READ', а' PROT_READ' несовместим с 'open()', используя 'O_WRONLY'. –
@IwillnotexistIdonotexist: Сделайте это ответом. Это правильный вариант. –
@Iwillnotexist Idonotexist Спасибо! Я меняю open() O_WRONLY на O_RDWR, и все в порядке! –