В моем коде, у меня есть следующий фрагмент:Попытки создать файл в C с полными правами для всех
char* filename="/something.txt";
umask(0);
int filehandle=open(filename,O_WRONLY|O_CREAT|0x777);
close(filehandle);
После его выполнения, файл создается, но разрешения не установлены правильно, даже если я последовал документацию.
Документация гласит:
Режим аргумент определяет права доступа для использования в случае, если новый файл CRE-ованные. Он модифицируется umask процесса обычным способом: разрешения созданного файла (режим & ~ umask).
и для режима я указал 0x777, что означает чтение, запись и выполнение. для UMASK, я указал ноль так 0x777 & ~0
должно привести к 777.
Разрешения, которые на самом деле являются результатом являются 670.
Почему так и как это исправить?
попробуйте открыть (имя файла, O_WRONLY | O_CREAT, 0x777); вместо open (имя_файла, O_WRONLY | O_CREAT | 0x777); –
'int filehandle = open (имя файла, O_WRONLY | O_CREAT | 0x777);' неверно. 'mode' - отдельный аргумент для' open() 'и должен быть' 0777', а не '0x777'. – EOF
ok оба предложения в сочетании сработали для меня. Благодарю. – Mike