std::filesystem:: perm_options
|
定义于头文件
<filesystem>
|
||
|
enum
class
perm_options
{
replace
=
/* 未指定 */
,
|
(C++17 起) | |
此类型表示控制函数 std::filesystem::permissions() 行为的可用选项。
perm_options
满足
BitmaskType
的要求(这意味着位运算符
operator
&
、
operator
|
、
operator
^
、
operator~
、
operator
&
=
、
operator
|
=
和
operator
^
=
已为此类型定义)。
成员常量
最多只能存在
add
、
remove
、
replace
中的一个,否则权限函数的行为是未定义的。
| 枚举项 | 含义 |
replace
|
权限将被
permissions()
的参数完全替换(默认行为)
|
add
|
权限将被参数与当前权限的按位或运算结果替换 |
remove
|
权限将被参数的按位非运算结果与当前权限的按位与运算结果替换 |
nofollow
|
权限将更改符号链接本身,而非其指向的文件 |
示例
#include <filesystem> #include <fstream> #include <iostream> void demo_perms(std::filesystem::perms p) { using std::filesystem::perms; auto show = [=](char op, perms perm) { std::cout << (perms::none == (perm & p) ? '-' : op); }; show('r', perms::owner_read); show('w', perms::owner_write); show('x', perms::owner_exec); show('r', perms::group_read); show('w', perms::group_write); show('x', perms::group_exec); show('r', perms::others_read); show('w', perms::others_write); show('x', perms::others_exec); std::cout << '\n'; } int main() { std::ofstream("test.txt"); // 创建文件 std::cout << "创建文件时的权限: "; demo_perms(std::filesystem::status("test.txt").permissions()); std::filesystem::permissions( "test.txt", std::filesystem::perms::owner_all | std::filesystem::perms::group_all, std::filesystem::perm_options::add ); std::cout << "添加 u+rwx 和 g+rwx 后: "; demo_perms(std::filesystem::status("test.txt").permissions()); std::filesystem::remove("test.txt"); }
可能的输出:
创建文件时的权限: rw-r--r-- 添加 u+rwx 和 g+wrx 后: rwxrwxr--
参见
|
(C++17)
|
修改文件访问权限
(函数) |
|
(C++17)
|
标识文件系统权限
(枚举) |