I am trying to write a simple C program that creates directories (clone mkdir.). 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 a directory with d---------
, but I want it to create it using drwxr-xr-x
, like mkdir do? What am I doing wrong here?
Edit: This is a working solution for me:
int main(int argc, const char *argv[]) { if (mkdir("trial",0777) == -1) { perror(argv[0]); exit(EXIT_FAILURE); } return 0; }
Setting permissions according to umask is automatically processed. Therefore, I only needed to call mkdir with full permissions, and it would be shredded according to the current umask.
yasar source share