Откройте файл в Linux. Я не хочу создавать защищенный от записи файл

У меня есть проблема, когда я создаю файл в Linux, он делает мой файл защищенным от записи, и я не знаю, почему это происходит.

void fileOperation::openFileWrite(char x, off_t s)
{
int fd;
char c[2] = {x};

fd = open("/home/stud/txtFile", O_CREAT | O_WRONLY);  //open file
if(fd == -1)
cout << "can't open file" << endl;
else
{
lseek(fd, s, SEEK_SET);//seek at first byte
write(fd, (void*)&c, 2);//write to file
}
syncfs(fd);
::close(fd);
}

3

Решение

Вы должны использовать дополнительный аргумент с установленным разрешением на запись (разрешение по умолчанию может быть отключено)

 fd = open("/home/stud/txtFile", O_CREAT | O_WRONLY, 0666);//open file

0666 является восьмеричным числом, то есть каждый из 6 соответствует трем битам разрешения

6 = rw
7 = rwx
4

Другие решения

Вы, вероятно, имеете ограничительный umask, open Вызов просто попытается создать файл в режиме 0666, но пользовательская маска umask обычно удаляет многие из этих битов разрешения.

1

По вопросам рекламы [email protected]