std::filesystem::perm_options
< cpp | filesystem
定义于头文件 <filesystem>
|
||
enum class perm_options { replace = /* unspecified */, |
(C++17 起) | |
此类型代表控制函数 permissions() 行为的可用选项。
perm_options
满足满足位掩码类型 (BitmaskType) 的要求(表示位运算符 operator& 、 operator| 、 operator^ 、 operator~ 、 operator&= 、 operator|= 及 operator^= 对此类型定义)
成员常量
add
、 remove
、 replace
至多可以存在一个,否则 permissions 函数的行为未定义。
成员常量 | 含义 |
---|---|
replace
|
以给 permissions() 的参数完全替换权限(默认行为)
|
add
|
以当前权限和参数的逐位或替换权限 |
remove
|
以当前权限和参数取反结果的逐位与替换权限 |
nofollow
|
permissions 将更改符号链接自身,而非其所代表的文件 |
示例
运行此代码
#include <fstream> #include <bitset> #include <iostream> #include <filesystem> namespace fs = std::filesystem; void demo_perms(fs::perms p) { std::cout << ((p & fs::perms::owner_read) != fs::perms::none ? "r" : "-") << ((p & fs::perms::owner_write) != fs::perms::none ? "w" : "-") << ((p & fs::perms::owner_exec) != fs::perms::none ? "x" : "-") << ((p & fs::perms::group_read) != fs::perms::none ? "r" : "-") << ((p & fs::perms::group_write) != fs::perms::none ? "w" : "-") << ((p & fs::perms::group_exec) != fs::perms::none ? "x" : "-") << ((p & fs::perms::others_read) != fs::perms::none ? "r" : "-") << ((p & fs::perms::others_write) != fs::perms::none ? "w" : "-") << ((p & fs::perms::others_exec) != fs::perms::none ? "x" : "-") << '\n'; } int main() { std::ofstream("test.txt"); // 创建文件 std::cout << "Created file with permissions: "; demo_perms(fs::status("test.txt").permissions()); fs::permissions("test.txt", fs::perms::owner_all | fs::perms::group_all, fs::perm_options::add); std::cout << "After adding o+rwx and g+rwx: "; demo_perms(fs::status("test.txt").permissions()); fs::remove("test.txt"); }
可能的输出:
Created file with permissions: rw-r--r-- After adding o+rwx and g+wrx: rwxrwxr--
参阅
(C++17) |
修改文件访问权限 (函数) |
(C++17) |
标识文件系统权限 (枚举) |