我正在尝试编写一个简单的 C 程序来创建目录(mkdir 克隆)。这是我到目前为止所拥有的:
#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 一样吗?我在这里做错了什么?
你似乎误解了什么umask
是用来。它设置/检索进程的文件模式创建掩码,该掩码又用于turn off您在调用中指定的文件模式中的位,例如mkdir
,像这样(伪代码):
real_mode = requested_mode & ~umask
因此,在您的代码中,由于您传入了 umask 本身的值,因此您最终将权限指定为零,这正是您所看到的。
相反,您应该在调用中指定所需的权限mkdir
, 像这样:
mkdir("trial", 0755)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)