Espacios de nombres
Variantes
Acciones

std::filesystem::perm_options

De cppreference.com
 
 
 
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).

[editar] 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.

[editar] 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--

[editar] Véase también

Modifica los permisos de acceso a archivo.
(función) [editar]
(C++17)
Identifica los permisos del sistema de archivos.
(enum) [editar]