std::experimental::filesystem:: permissions
From cppreference.net
<
cpp
|
experimental
|
fs
|
헤더 파일에 정의됨
<experimental/filesystem>
|
||
|
void
permissions
(
const
path
&
p, perms prms
)
;
void permissions ( const path & p, perms prms, error_code & ec ) ; |
(filesystem TS) | |
p
가 해석하는 파일의 접근 권한을 변경합니다. POSIX
fchmodat
과 유사하게 동작합니다.
prms::resolve_symlinks
가 설정된 경우 심볼릭 링크를 따릅니다.
효과는 다음과 같이 prms 에 따라 달라집니다:
- perms :: add_perms 도 perms :: remove_perms 도 설정되지 않은 경우, 파일 권한은 정확히 prms & fs :: perms :: mask 로 설정됩니다 (즉, prms 의 모든 유효한 비트가 적용됩니다).
- perms :: add_perms 가 설정된 경우, 파일 권한은 정확히 status ( p ) . permissions ( ) | ( prms & perms :: mask ) 로 설정됩니다 (즉, prms 에 설정되어 있지만 파일의 현재 권한에는 없는 모든 유효한 비트가 파일 권한에 추가됩니다).
- perms :: remove_perms 가 설정된 경우, 파일 권한은 정확히 status ( p ) . permissions ( ) & ~ ( prms & perms :: mask ) 로 설정됩니다 (즉, prms 에서 지워져 있지만 파일의 현재 권한에는 설정된 모든 유효한 비트가 파일 권한에서 지워집니다).
- perms :: add_perms 와 perms :: remove_perms 가 모두 설정된 경우, 오류가 발생합니다.
예외를 던지지 않는 오버로드는 오류 시 특별한 동작을 하지 않습니다.
목차 |
매개변수
| p | - | 검사할 경로 |
| prms | - | 설정, 추가 또는 제거할 권한 |
| ec | - | 비예외 발생 오버로드에서 오류 보고를 위한 출력 매개변수 |
반환값
(없음)
예외
The overload that does not take an error_code & parameter throws filesystem_error on underlying OS API errors, constructed with p as the first argument and the OS error code as the error code argument. std:: bad_alloc may be thrown if memory allocation fails. The overload taking an error_code & parameter sets it to the OS API error code if an OS API call fails, and executes ec. clear ( ) if no errors occur. This overload has
noexcept
명세:
noexcept
참고 사항
권한은 반드시 비트로 구현되지는 않지만, 개념적으로는 그렇게 취급됩니다.
일부 권한 비트는 일부 시스템에서 무시될 수 있으며, 일부 비트를 변경하면 자동으로 다른 비트가 변경될 수 있습니다(예: 소유자/그룹/전체 구분이 없는 플랫폼에서 세 가지 쓰기 비트 중 하나를 설정하면 세 비트 모두가 설정됨).
예제
이 코드 실행
#include <bitset> #include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; void demo_perms(fs::perms p) { std::cout << ((p & fs::perms::owner_read) != fs::perms::none ? "r" : "-") << ((p & fs::perms::owner_write) != fs::perms::none ? "w" : "-") << ((p & fs::perms::owner_exec) != fs::perms::none ? "x" : "-") << ((p & fs::perms::group_read) != fs::perms::none ? "r" : "-") << ((p & fs::perms::group_write) != fs::perms::none ? "w" : "-") << ((p & fs::perms::group_exec) != fs::perms::none ? "x" : "-") << ((p & fs::perms::others_read) != fs::perms::none ? "r" : "-") << ((p & fs::perms::others_write) != fs::perms::none ? "w" : "-") << ((p & fs::perms::others_exec) != fs::perms::none ? "x" : "-") << '\n'; } int main() { std::ofstream("test.txt"); // 파일 생성 std::cout << "생성된 파일 권한: "; demo_perms(fs::status("test.txt").permissions()); fs::permissions("test.txt", fs::perms::add_perms | fs::perms::owner_all | fs::perms::group_all); std::cout << "o+rwx 및 g+rwx 추가 후: "; demo_perms(fs::status("test.txt").permissions()); fs::remove("test.txt"); }
가능한 출력:
생성된 파일 권한: rw-r--r-- o+rwx 및 g+rwx 추가 후: rwxrwxr--
참고 항목
|
파일 시스템 권한 식별
(열거형) |
|
|
파일 속성 결정
심볼릭 링크 대상 확인하여 파일 속성 결정 (함수) |