std::filesystem:: permissions
|
Défini dans l'en-tête
<filesystem>
|
||
|
void
permissions
(
const
std::
filesystem
::
path
&
p,
std::
filesystem
::
perms
prms,
|
(1) | (depuis C++17) |
|
void
permissions
(
const
std::
filesystem
::
path
&
p,
std::
filesystem
::
perms
prms,
|
(2) | (depuis C++17) |
|
void
permissions
(
const
std::
filesystem
::
path
&
p,
std::
filesystem
::
perms
prms,
|
(3) | (depuis C++17) |
Modifie les permissions d'accès du fichier vers lequel
p
se résout, comme par la fonction POSIX
fchmodat
. Les liens symboliques sont suivis sauf si
perm_options::nofollow
est défini dans
opts
.
La deuxième signature se comporte comme si elle était appelée avec opts défini à perm_options :: replace .
Les effets dépendent de prms et de opts comme suit :
- Si opts est perm_options :: replace , les permissions du fichier sont définies exactement à prms & std:: filesystem :: perms :: mask (c'est-à-dire que chaque bit valide de prms est appliqué).
- Si opts est perm_options :: add , les permissions du fichier sont définies exactement à status ( p ) . permissions ( ) | ( prms & perms :: mask ) (c'est-à-dire que tout bit valide qui est défini dans prms , mais pas dans les permissions actuelles du fichier, est ajouté aux permissions du fichier).
- Si opts est perm_options :: remove , les permissions du fichier sont définies exactement à status ( p ) . permissions ( ) & ~ ( prms & perms :: mask ) (c'est-à-dire que tout bit valide qui est désactivé dans prms , mais défini dans les permissions actuelles du fichier, est désactivé dans les permissions du fichier).
opts
doit avoir exactement une des options
replace
,
add
, ou
remove
définie.
La surcharge non levante n'a aucune action spéciale en cas d'erreur.
Table des matières |
Paramètres
| p | - | chemin à examiner |
| prms | - | permissions à définir, ajouter ou supprimer |
| opts | - | options contrôlant l'action effectuée par cette fonction |
| ec | - | paramètre de sortie pour le rapport d'erreurs dans la surcharge non-lancante |
Valeur de retour
(aucun)
Exceptions
Toute surcharge non marquée
noexcept
peut lever
std::bad_alloc
si l'allocation de mémoire échoue.
Notes
Les permissions ne sont pas nécessairement implémentées sous forme de bits, mais elles sont traitées ainsi conceptuellement.
Certains bits de permission peuvent être ignorés sur certains systèmes, et modifier certains bits peut automatiquement en modifier d'autres (par exemple, sur les plateformes sans distinction propriétaire/groupe/tous, définir l'un des trois bits d'écriture définit les trois).
Exemple
#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"); // create file 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"); }
Sortie possible :
Created file with permissions: rw-r--r-- After adding u+rwx and g+wrx: rwxrwxr--
Voir aussi
|
(C++17)
|
identifie les permissions du système de fichiers
(enum) |
|
(C++17)
(C++17)
|
détermine les attributs de fichier
détermine les attributs de fichier en vérifiant la cible du lien symbolique (function) |