gpt4 book ai didi

c - 如何在 Posix 上使用 C 创建具有正确权限的目录

转载 作者:太空狗 更新时间:2023-10-29 17:02:38 24 4
gpt4 key购买 nike

我正在尝试编写一个简单的 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------------ 创建目录,但我希望它像 mkdir 一样使用 drwxr-xr-x 创建它?我在这里做错了什么?

最佳答案

您似乎误解了 umask 的用途。它设置/检索进程的文件模式创建掩码,该掩码又用于关闭您在 mkdir 等调用中指定的文件模式中的位,就像这样(pseduo-代码):

real_mode = requested_mode & ~umask

因此在您的代码中,由于您传入了 umask 本身的值,因此您最终将权限指定为零,这正是您所看到的。

相反,您应该在调用 mkdir 时指定您想要的权限,如下所示:

mkdir("trial", 0755)

关于c - 如何在 Posix 上使用 C 创建具有正确权限的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10147990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com