Как создать каталог с правами доступа, используя C на Posix

Я пытаюсь написать простую программу на C, которая создает каталоги (клон mkdir). Вот что у меня есть на данный момент:

#include <stdlib.h>
#include <sys/stat.h> // mkdir
#include <stdio.h> // perror

mode_t getumask()
{
    mode_t mask = umask(0);
    umask (mask);
    return mask;
}

int main(int argc, const char *argv[])
{
    mode_t mask = getumask();
    printf("%i",mask);

    if (mkdir("trial",mask) == -1) {
        perror(argv[0]);
        exit(EXIT_FAILURE);
    }
    return 0;
}

Этот код создает каталог с d---------, но я хочу, чтобы он создал его с drwxr-xr-x. ] как mkdir? Что я здесь делаю неправильно?

Редактировать: Это рабочее решение для меня:

int main(int argc, const char *argv[])
{
    if (mkdir("trial",0777) == -1) {
        perror(argv[0]);
        exit(EXIT_FAILURE);
    }
    return 0;
}

Установка правильных разрешений в соответствии с umask обрабатывается автоматически. Так что мне нужно было только вызвать mkdir с полными правами доступа, и это прерывается в соответствии с текущим umask.

8
задан Cœur 3 March 2019 в 13:15
поделиться