From cppreference.com
enumclassperm_options{replace=/* unspecified */,add=/* unspecified */,remove=/* unspecified */,nofollow=/* unspecified */};(since C++17)This type represents available options that control the behavior of the function
std::filesystem::permissions()
.
perm_options satisfies the requirements of
(which means the bitwise operators operator&, operator|, operator^, operator~, operator&=, operator|=, and operator^= are defined for this type).
Member constants
At most one of add, remove, replace may be present, otherwise the behavior of the permissions function is undefined.
Enumerator Meaning replacepermissions will be completely replaced by the argument to
(default behavior) addpermissions will be replaced by the bitwise OR of the argument and the current permissions removepermissions will be replaced by the bitwise AND of the negated argument and current permissions nofollowpermissions will be changed on the symlink itself, rather than on the file it resolves to Example
Run this code
#include<filesystem>#include<fstream>#include<iostream>voiddemo_perms(std::filesystem::permsp){usingstd::filesystem::perms;autoshow=[=](charop,permsperm){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';}intmain(){std::ofstream("test.txt");// create filestd::cout<<"Created file with permissions: ";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<<"After adding u+rwx and g+rwx: ";demo_perms(std::filesystem::status("test.txt").permissions());std::filesystem::remove("test.txt");}Possible output:
Created file with permissions: rw-r--r-- After adding u+rwx and g+wrx: rwxrwxr-- See also