std::filesystem:: permissions
|
Definido en el encabezado
<filesystem>
|
||
|
void
permissions
(
const
std::
filesystem
::
path
&
p,
std::
filesystem
::
perms
prms,
|
(1) | (desde C++17) |
|
void
permissions
(
const
std::
filesystem
::
path
&
p,
std::
filesystem
::
perms
prms,
|
(2) | (desde C++17) |
|
void
permissions
(
const
std::
filesystem
::
path
&
p,
std::
filesystem
::
perms
prms,
|
(3) | (desde C++17) |
Cambia los permisos de acceso del archivo al que
p
resuelve, como si fuera mediante POSIX
fchmodat
. Los enlaces simbólicos se siguen a menos que
perm_options::nofollow
esté establecido en
opts
.
La segunda firma se comporta como si fuera llamada con opts establecido a perm_options :: replace .
Los efectos dependen de prms y opts como sigue:
- Si opts es perm_options :: replace , los permisos del archivo se establecen exactamente a prms & std:: filesystem :: perms :: mask (es decir, se aplica cada bit válido de prms ).
- Si opts es perm_options :: add , los permisos del archivo se establecen exactamente a status ( p ) . permissions ( ) | ( prms & perms :: mask ) (es decir, cualquier bit válido que esté establecido en prms , pero no en los permisos actuales del archivo, se añade a los permisos del archivo).
- Si opts es perm_options :: remove , los permisos del archivo se establecen exactamente a status ( p ) . permissions ( ) & ~ ( prms & perms :: mask ) (es decir, cualquier bit válido que esté desactivado en prms , pero establecido en los permisos actuales del archivo, se desactiva en los permisos del archivo).
opts
debe tener solo una de las opciones
replace
,
add
, o
remove
configurada.
La sobrecarga que no lanza excepciones no tiene ninguna acción especial en caso de error.
Contenidos |
Parámetros
| p | - | ruta a examinar |
| prms | - | permisos a establecer, agregar o eliminar |
| opts | - | opciones que controlan la acción tomada por esta función |
| ec | - | parámetro de salida para reporte de errores en la sobrecarga no lanzadora |
Valor de retorno
(ninguno)
Excepciones
Cualquier sobrecarga no marcada como
noexcept
puede lanzar
std::bad_alloc
si la asignación de memoria falla.
Notas
Los permisos pueden no implementarse necesariamente como bits, pero se tratan conceptualmente de esa manera.
Algunos bits de permisos pueden ser ignorados en algunos sistemas, y cambiar algunos bits puede automáticamente cambiar otros (por ejemplo, en plataformas sin distinción propietario/grupo/todos, establecer cualquiera de los tres bits de escritura establece los tres).
Ejemplo
#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"); // crear archivo 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"); }
Salida posible:
Created file with permissions: rw-r--r-- After adding u+rwx and g+wrx: rwxrwxr--
Véase también
|
(C++17)
|
identifica permisos del sistema de archivos
(enum) |
|
(C++17)
(C++17)
|
determina atributos de archivo
determina atributos de archivo, verificando el destino del enlace simbólico (function) |