Estoy tratando de escribir un programa C simple que crea directorios (un clon mkdir). Esto es lo que tengo hasta ahora:Cómo crear un directorio con permisos derechos usando C en Posix
#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;
}
Este código crea directorio con d---------
, pero quiero que se crean con drwxr-xr-x
como mkdir hacer? ¿Qué estoy haciendo mal aquí?
Editar: Esta es la solución de trabajo para mí:
int main(int argc, const char *argv[])
{
if (mkdir("trial",0777) == -1) {
perror(argv[0]);
exit(EXIT_FAILURE);
}
return 0;
}
Establecer permisos adecuados según la máscara de usuario se maneja de forma automática. Así que solo necesitaba llamar a mkdir con todos los permisos, y eso se corta según la umask actual.
¿Qué produce la impresión de diagnóstico? Podría funcionar mejor si agregó una nueva línea después del '% i', y sería más fácil de leer si usó'% o' o '% .4o' en lugar de'% i'. Además, parece que falta '#include' que declara ['umask()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/umask.html) y ['mkdir()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html). –
Produce 22 con% 4o. – yasar