디렉토리 (mkdir 복제본)를 만드는 간단한 C 프로그램을 작성하려고합니다.Posix에서 C를 사용하여 오른쪽 permissons로 디렉토리를 만드는 방법
#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;
}
이 코드는 d---------
와 디렉토리를 생성하지만 MKDIR 할 것처럼 drwxr-xr-x
그것을 만들 : 이것은 내가 지금까지 가지고 무엇인가? 여기서 내가 뭘 잘못하고 있니?
편집
: umask에 따라 바로 권한 설정 이int main(int argc, const char *argv[])
{
if (mkdir("trial",0777) == -1) {
perror(argv[0]);
exit(EXIT_FAILURE);
}
return 0;
}
자동으로 처리됩니다 이 나를 위해 작동 솔루션입니다. 그래서 전체 권한을 가진 mkdir 만 호출하면됩니다. 현재 umask에 따라 잘게됩니다.
진단 인쇄물은 무엇을 생산합니까? '% i' 다음에 개행 문자를 추가하면 더 잘 작동 할 수 있습니다.'% i' 대신'% o' 또는'.4o'를 사용하면 더 쉽게 읽을 수 있습니다. 또한, ['umask()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/umask.html)과 ['mkdir()']을 선언 한'#include' (http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html). –
그것은 % 4o로 22를 생성합니다. – yasar