Próbuję napisać prosty program C, który tworzy katalogi (klon mkdir.). To, co mam tak daleko:Jak utworzyć katalog z prawymi uprawnieniami za pomocą C na 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;
}
Kod ten tworzy katalog z d---------
ale chcę, aby go utworzyć z drwxr-xr-x
jak mkdir zrobić? Co ja tu robię źle?
Edit: Jest to roztwór roboczy dla mnie:
int main(int argc, const char *argv[])
{
if (mkdir("trial",0777) == -1) {
perror(argv[0]);
exit(EXIT_FAILURE);
}
return 0;
}
Ustawienie odpowiednie uprawnienia zgodnie z umask jest obsługiwana automatycznie. Tak więc musiałem tylko wywołać mkdir z pełnymi uprawnieniami, a to zostanie posiekane zgodnie z aktualną umask.
Co wytwarza wydruk diagnostyczny? Może działać lepiej, jeśli dodasz znak nowej linii po '% i', i będzie łatwiejszy do odczytania, jeśli użyjesz'% o' lub '% .4o' zamiast'% i'. Ponadto wydaje się, że brakuje '#include', który deklaruje ['umask()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/umask.html) i ['mkdir()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html). –
Powoduje 22 z% 4o. – yasar