Namespaces
Variants

std::filesystem:: perm_options

From cppreference.net
헤더 파일에 정의됨 <filesystem>
enum class perm_options {

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

} ;
(C++17부터)

이 타입은 함수 std::filesystem::permissions() 의 동작을 제어하는 사용 가능한 옵션들을 나타냅니다.

perm_options BitmaskType 요구 사항을 만족합니다 (이는 비트 연산자 operator & , operator | , operator ^ , operator~ , operator & = , operator | = , 그리고 operator ^ = 가 이 타입에 대해 정의되어 있음을 의미합니다).

멤버 상수

최대 하나의 add , remove , replace 만 존재할 수 있으며, 그렇지 않을 경우 permissions 함수의 동작은 정의되지 않습니다.

열거자 의미
replace 권한이 permissions() 의 인수로 완전히 대체됨 (기본 동작)
add 권한이 인수와 현재 권한의 비트 OR 연산 결과로 대체됨
remove 권한이 부정된 인수와 현재 권한의 비트 AND 연산 결과로 대체됨
nofollow 심볼릭 링크가 가리키는 파일 대신 심볼릭 링크 자체의 권한이 변경됨

예제

#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"); // 파일 생성
    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");
}

가능한 출력:

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

참고 항목

파일 접근 권한을 수정합니다
(함수)
(C++17)
파일 시스템 권한을 식별합니다
(열거형)