Мой код выглядит следующим образом:«создающих» функция дает неправильные разрешения
#include "unistd.h"
#include <fcntl.h>
#define BSIZE 50
int main(int argc, char *argv[]) {
int f1, f2;
char buf[BSIZE];
f1 = open(argv[1], 0x0001, 0);
f2 = creat(argv[2], 0777);
read(f1, buf, BSIZE);
write(f2, buf, BSIZE);
return 0;
}
Когда я создаю файл с именем «а» и использовать скомпилированную программу с командой
./a.out a b
создает файл с содержанием «а». Но моя проблема в том, что ее разрешения равны -rwxr-xr-x
. Он не дает права на запись для группы и других. Более того, когда я меняю функцию на creat(argv[2], 0022);
, тогда разрешение станет все 0 с ----------
.
Есть ли что-то неправильное с функцией creat
? Потому что chmod
отлично работает.
Ваше объяснение «umask» удовлетворило мой вопрос очень хорошо. Спасибо. –