Namespaces
Variants

std::filesystem:: perm_options

From cppreference.net
Definiert im Header <filesystem>
enum class perm_options {

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

} ;
(seit C++17)

Dieser Typ repräsentiert verfügbare Optionen, die das Verhalten der Funktion std::filesystem::permissions() steuern.

perm_options erfüllt die Anforderungen von BitmaskType (was bedeutet, dass die bitweisen Operatoren operator & , operator | , operator ^ , operator~ , operator & = , operator | = und operator ^ = für diesen Typ definiert sind).

Member-Konstanten

Höchstens eines von add , remove , replace darf vorhanden sein, andernfalls ist das Verhalten der Berechtigungsfunktion undefiniert.

Enumerator Bedeutung
replace Berechtigungen werden vollständig durch das Argument von permissions() ersetzt (Standardverhalten)
add Berechtigungen werden durch das bitweise ODER des Arguments und der aktuellen Berechtigungen ersetzt
remove Berechtigungen werden durch das bitweise UND des negierten Arguments und der aktuellen Berechtigungen ersetzt
nofollow Berechtigungen werden für die Symlink-Datei selbst geändert, nicht für die Datei, auf die sie verweist

Beispiel

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

Mögliche Ausgabe:

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

Siehe auch

ändert Dateizugriffsberechtigungen
(Funktion)
(C++17)
identifiziert Dateisystemberechtigungen
(Enumeration)