std::filesystem::perm_options - cppreference.com
提供: cppreference.com
<tbody> </tbody>
|
|
(C++17以上) | |
この型は関数 permissions() の動作を制御するための利用可能なオプションを表します。
perm_options は BitmaskType の要件を満たします (つまり、この型に対してビット単位の演算子 operator&, operator|, operator^, operator~, operator&=, operator|=, operator^= が定義されます)。
メンバ定数
add, remove, replace のうち高々1つのみを指定してもよく、そうでなければ permissions 関数の動作は未定義です。
| メンバ定数 | 意味 |
|---|---|
replace
|
パーミッションは permissions() の引数で完全に置き換えられます (デフォルトの動作)
|
add
|
パーミッションは引数と現在のパーミッションのビット単位の論理和で置き換えられます |
remove
|
パーミッションは引数の否定と現在のパーミッションのビット単位の論理積で置き換えられます |
nofollow
|
パーミッションの変更はシンボリックリンクの解決先のファイルではなくシンボリックリンク自体に対して行われます |
例
#include <fstream> #include <bitset> #include <iostream> #include <filesystem> namespace fs = std::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"); // create file std::cout << "Created file with permissions: "; demo_perms(fs::status("test.txt").permissions()); fs::permissions("test.txt", fs::perms::owner_all | fs::perms::group_all, fs::perm_options::add); std::cout << "After adding o+rwx and g+rwx: "; demo_perms(fs::status("test.txt").permissions()); fs::remove("test.txt"); }
出力例:
Created file with permissions: rw-r--r-- After adding o+rwx and g+wrx: rwxrwxr--