How to create directory with right permissions using C on Posix
c, mkdir, posix, umask
Solution
As Eric says, umask is the complement of the actual permission mode you get. So instead of passing mask itself to `mkdir()`, you should pass `0777-mask` to `mkdir()`.
Problem
I am trying to write a simple C program that creates directories (a mkdir clone.). This is what I have so far: ``` #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; } ``` This code creates directory with `d---------` but I want it to create it with `drwxr-xr-x` like mkdir do? What am I doing wrong here?