gpt4 book ai didi

c++ - 使用 C++ 设置对目录的权限

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:44 24 4
gpt4 key购买 nike

我尝试创建新目录并设置其权限(最多使用 c++11 且不使用 boost)以便用户、组和其他人可以列出其中的文件读取它们并写入新文件(linux环境)。

#include <sys/stat.h>
#include <sys/types.h>

int main(void) {
const char* path = "/tmp/newDir";
mode_t process_mask = umask(0);
int syscall_status = mkdir(path, S_IRWXU | S_IRWXG | S_IRWXO);
umask(process_mask);
return syscall_status;
}

此代码基于 mkdir(和 umask)的手册 (2) 页。但是,创建的目录具有 rwxr-xr-x 权限(组和其他人无写入权限)。我也尝试在目录上使用 chmod 系统调用,但它没有解决问题。 stackoverflow 中的其他来源处理文件(而不是文件夹),并尝试在我的目录上应用文件方法也没有效果。

此外,我想避免从 stdlib 调用 system(),如果我找不到解决方案(安全考虑),这是我将使用的最后一个选项。

最佳答案

char* path = "/tmp/newDir";

除了语法错误之外,自 C++11 以来,这是格式错误的。在此之前,这将使用已弃用的转换。字符串文字在 C++ 中是常量 -> 使用指向常量的指针。

除此之外,假设是 POSIX 系统,该程序是正确的。如果失败,那么您可以检查 errno 以查看原因。如果没有获得所有权限:检查父目录是否有默认ACL;这将覆盖 umask。

在 C++ 中创建目录的可移植方法是 std::filesystem::create_directory,设置权限的方法是 std::filesystem::permissions

关于c++ - 使用 C++ 设置对目录的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58080973/

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