std::filesystem::perm_options

std::filesystem::perm_options (권한 변경 옵션)

std::filesystem::permissions() 함수의 동작을 제어하는 옵션을 나타내는 열거 타입이에요. C++17부터 있어요.

출처: cppreference

본문

<filesystem> 헤더에 정의돼 있어요.

enum class perm_options {
    replace = /* unspecified */,
    add = /* unspecified */,
    remove = /* unspecified */,
    nofollow = /* unspecified */
};

이 타입은 std::filesystem::permissions() 함수의 동작을 제어하는 사용 가능한 옵션을 나타내요. perm_options는 BitmaskType 요구사항을 만족해요.

멤버 상수

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);
    // ... owner_all, group/others 비트 표시
}
// fs::permissions("sandbox", fs::perms::owner_all | fs::perm_options::add) 등으로 사용

더 알아보기 (Learn more)

cppreference