std::filesystem::perm_options - cppreference.com
De cppreference.com
| Definido en el archivo de encabezado |
||
|
|
(desde C++17) | |
Este tipo representa las opciones disponibles que controlan el comportamiento de la función std::filesystem::permissions().
perm_options satisface los requerimientos de BitmaskType (que significa que los operadores de bit a bit operator&, operator|, operator^, operator~, operator&=, operator|=, y operator^= se definen para este tipo).
Constantes miembro
A lo sumo, puede estar presente uno de add, remove, o replace. De lo contrario, el comportamiento de la función de permisos no está definido.
| Constante miembro | Significado |
|---|---|
replace
|
Los permisos se reemplazarán completamente por el argumento a permissions() (comportamiento por defecto).
|
add
|
Los permisos se reemplazarán por el resultado de la operación OR bit a bit del argumento y de los permisos actuales. |
remove
|
Los permisos se reemplazarán por el resultado de la operación AND bit a bit del argumento negado y los permisos actuales. |
nofollow
|
Los permisos se cambiarán en el enlace simbólico mismo, en lugar de en el archivo al que se resuelve. |
Ejemplo
#include <fstream> #include <bitset> #include <iostream> #include <filesystem> namespace fs = std::filesystem; void demo_permisos(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("prueba.txt"); // crear archivo std::cout << "Archivo creado con permisos: "; demo_permisos(fs::status("prueba.txt").permissions()); fs::permissions("prueba.txt", fs::perms::owner_all | fs::perms::group_all, fs::perm_options::add); std::cout << "Al agregar u+rwx y g+rwx: "; demo_permisos(fs::status("prueba.txt").permissions()); fs::remove("prueba.txt"); }
Posible salida:
Archivo creado con permisos: rw-r--r-- Al agregar u+rwx y g+wrx: rwxrwxr--