std::filesystem::perm_options
De cppreference.com
< cpp | filesystem
<tbody>
</tbody>
| Definido en el archivo de encabezado <filesystem>
|
||
enum class perm_options { replace = /* no especificado */, add = /* no especificado */, remove = /* no especificado */, nofollow = /* no especificado */ }; |
(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
Ejecuta este código
#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--
Véase también
(C++17) |
Modifica los permisos de acceso a archivo. (función) |
(C++17) |
Identifica los permisos del sistema de archivos. (enum) |