Namespaces
Variants

std::filesystem:: perm_options

From cppreference.net
Definido en el encabezado <filesystem>
enum class perm_options {

replace = /* unspecified */ ,
add = /* unspecified */ ,
remove = /* unspecified */ ,
nofollow = /* unspecified */

} ;
(desde C++17)

Este tipo representa las opciones disponibles que controlan el comportamiento de la función std::filesystem::permissions() .

perm_options satisface los requisitos de BitmaskType (lo que significa que los operadores bit a bit operator & , operator | , operator ^ , operator~ , operator & = , operator | = , y operator ^ = están definidos para este tipo).

Constantes de miembro

A lo sumo uno de add , remove , replace puede estar presente, de lo contrario el comportamiento de la función de permisos es indefinido.

Enumerador Significado
replace los permisos serán completamente reemplazados por el argumento de permissions() (comportamiento predeterminado)
add los permisos serán reemplazados por el OR bit a bit del argumento y los permisos actuales
remove los permisos serán reemplazados por el 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 resuelve

Ejemplo

#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"); // crear archivo
    std::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");
}

Salida posible:

Created file with permissions: rw-r--r--
After adding u+rwx and g+wrx:  rwxrwxr--

Véase también

modifica los permisos de acceso al archivo
(función)
(C++17)
identifica los permisos del sistema de archivos
(enumeración)