Sto provando a scrivere un semplice programma C che crea directory (un clone mkdir). Questo è quello che ho finora:Come creare la directory con i permissoni giusti usando C su 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;
}
Questo codice crea directory con d---------
ma lo voglio creare con drwxr-xr-x
come mkdir fare? Cosa sto facendo di sbagliato qui?
Edit: Questa è la soluzione di lavoro per me:
int main(int argc, const char *argv[])
{
if (mkdir("trial",0777) == -1) {
perror(argv[0]);
exit(EXIT_FAILURE);
}
return 0;
}
Impostazione permessi giusti in base al umask viene gestito automaticamente. Quindi ho solo bisogno di chiamare mkdir con permessi completi, e questo viene tagliato in base alla umask corrente.
Cosa produce la stampa diagnostica? Potrebbe funzionare meglio se si aggiungesse una nuova riga dopo '% i', e sarebbe più facilmente leggibile se si usasse'% o' o '% .4o' invece di'% i'. Inoltre, sembra che manchi '#include' che dichiara ['umask()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/umask.html) e ['mkdir()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html). –
Produce 22 con% 4o. – yasar