std::experimental::filesystem:: permissions
|
Défini dans l'en-tête
<experimental/filesystem>
|
||
|
void
permissions
(
const
path
&
p, perms prms
)
;
void permissions ( const path & p, perms prms, error_code & ec ) ; |
(filesystem TS) | |
Modifie les permissions d'accès du fichier vers lequel
p
pointe, comme avec la fonction POSIX
fchmodat
. Les liens symboliques sont suivis si
prms::resolve_symlinks
est défini.
Les effets dépendent de prms comme suit :
- Si ni perms :: add_perms ni perms :: remove_perms ne sont définis, les permissions du fichier sont définies exactement sur prms & fs :: perms :: mask (ce qui signifie que chaque bit valide de prms est appliqué).
- Si perms :: add_perms est défini, les permissions du fichier sont définies exactement sur status ( p ) . permissions ( ) | ( prms & perms :: mask ) (ce qui signifie 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 perms :: remove_perms est défini, les permissions du fichier sont définies exactement sur status ( p ) . permissions ( ) & ~ ( prms & perms :: mask ) (ce qui signifie 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).
- Si à la fois perms :: add_perms et perms :: remove_perms sont définis, une erreur se produit.
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 |
| ec | - | paramètre de sortie pour le rapport d'erreurs dans la surcharge non-lancante |
Valeur de retour
(aucun)
Exceptions
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 *Note: Le texte à traduire était uniquement constitué de balises HTML et de termes C++ spécifiques (`std::bad_alloc`), qui ne doivent pas être traduits selon les consignes. La structure HTML est donc conservée identique.* 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 hasNotes
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 plates-formes sans distinction propriétaire/groupe/tous, définir l'un des trois bits d'écriture définit les trois).
Exemple
#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"); // créer un fichier std::cout << "Fichier créé avec les permissions : "; 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 << "Après ajout de o+rwx et g+rwx : "; demo_perms(fs::status("test.txt").permissions()); fs::remove("test.txt"); }
Sortie possible :
Fichier créé avec les permissions : rw-r--r-- Après ajout de o+rwx et g+rwx : rwxrwxr--
Voir aussi
|
identifie les permissions du système de fichiers
(énumération) |
|
|
détermine les attributs de fichier
détermine les attributs de fichier en vérifiant la cible du lien symbolique (fonction) |