std::filesystem::perm_options
提供: cppreference.com
< cpp | filesystem
<tbody>
</tbody>
| ヘッダ <filesystem> で定義
|
||
enum class perm_options { replace = /* unspecified */, add = /* unspecified */, remove = /* unspecified */, nofollow = /* unspecified */ }; |
(C++17以上) | |
この型は関数 permissions() の動作を制御するための利用可能なオプションを表します。
perm_options は BitmaskType の要件を満たします (つまり、この型に対してビット単位の演算子 operator&, operator|, operator^, operator~, operator&=, operator|=, operator^= が定義されます)。
メンバ定数
add, remove, replace のうち高々1つのみを指定してもよく、そうでなければ permissions 関数の動作は未定義です。
| メンバ定数 | 意味 |
|---|---|
replace
|
パーミッションは permissions() の引数で完全に置き換えられます (デフォルトの動作)
|
add
|
パーミッションは引数と現在のパーミッションのビット単位の論理和で置き換えられます |
remove
|
パーミッションは引数の否定と現在のパーミッションのビット単位の論理積で置き換えられます |
nofollow
|
パーミッションの変更はシンボリックリンクの解決先のファイルではなくシンボリックリンク自体に対して行われます |
例
Run this code
#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--
関連項目
(C++17) |
ファイルアクセスパーミッションを変更します (関数) |
(C++17) |
ファイルシステムのパーミッションを表します (列挙) |