Namespaces
Variants

std::filesystem:: perm_options

From cppreference.net
Défini dans l'en-tête <filesystem>
enum class perm_options {

replace = /* non spécifié */ ,
add = /* non spécifié */ ,
remove = /* non spécifié */ ,
nofollow = /* non spécifié */

} ;
(depuis C++17)

Ce type représente les options disponibles qui contrôlent le comportement de la fonction std::filesystem::permissions() .

perm_options satisfait aux exigences de BitmaskType (ce qui signifie que les opérateurs bit à bit operator & , operator | , operator ^ , operator~ , operator & = , operator | = , et operator ^ = sont définis pour ce type).

Constantes membres

Au plus une des options add , remove , replace peut être présente, sinon le comportement de la fonction permissions est indéfini.

Énumérateur Signification
replace les permissions seront complètement remplacées par l'argument de permissions() (comportement par défaut)
add les permissions seront remplacées par le OU binaire de l'argument et des permissions actuelles
remove les permissions seront remplacées par le ET binaire de la négation de l'argument et des permissions actuelles
nofollow les permissions seront modifiées sur le lien symbolique lui-même, plutôt que sur le fichier vers lequel il pointe

Exemple

#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"); // create file
    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");
}

Sortie possible :

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

Voir aussi

modifie les permissions d'accès aux fichiers
(fonction)
(C++17)
identifie les permissions du système de fichiers
(énumération)