我正在嘗試編寫一個簡單的C程序來創建目錄(一個mkdir克隆。)。這是我到目前爲止有:如何在Posix上使用C創建具有正確權限的目錄
#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---------
,但我希望它與drwxr-xr-x
創建它喜歡的mkdir呢?我在這裏做錯了什麼?
編輯: 這是對我工作的解決方案:
int main(int argc, const char *argv[])
{
if (mkdir("trial",0777) == -1) {
perror(argv[0]);
exit(EXIT_FAILURE);
}
return 0;
}
根據umask設置正確的權限自動處理。所以我只需要以完全權限調用mkdir,並根據當前的umask將其切碎。
診斷打印件產生了什麼?如果你在'%i'後面添加一個換行符,它可能會更好,如果你使用'%o'或'%.4o'而不是'%i',它會更容易辨認。此外,您似乎缺少聲明['umask()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/umask.html)和['mkdir()']的'#include' (http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html)。 –
2012-04-13 20:46:06
它用%4o產生22。 – yasar 2012-04-13 20:47:36