std::experimental::filesystem:: create_hard_link
|
Definido en el encabezado
<experimental/filesystem>
|
||
|
void
create_hard_link
(
const
path
&
target,
const
path
&
link
)
;
void create_hard_link ( const path & target, const path & link, error_code & ec ) ; |
(filesystem TS) | |
Crea un enlace físico link con su destino establecido en target como si fuera mediante POSIX link() : la ruta target debe existir.
Una vez creados, link y target son dos nombres lógicos que se refieren al mismo archivo (son equivalent ). Incluso si el nombre original target es eliminado, el archivo continúa existiendo y es accesible como link .
Contenidos |
Parámetros
| target | - | ruta del archivo o directorio al que enlazar |
| link | - | ruta del nuevo enlace físico |
| ec | - | parámetro de salida para reporte de errores en la sobrecarga no lanzadora |
Valor de retorno
(ninguno)
Excepciones
The overload that does not take an error_code & parameter throws filesystem_error on underlying OS API errors, constructed with target as the first argument, enlace as the second argument, and the OS error code as the error code argument. std:: bad_alloc 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 hasNotas
Algunos sistemas operativos no admiten enlaces físicos en absoluto o solo los admiten para archivos regulares.
Algunos sistemas de archivos no admiten enlaces físicos independientemente del sistema operativo: el sistema de archivos FAT utilizado en tarjetas de memoria y unidades flash, por ejemplo.
Algunos sistemas de archivos limitan el número de enlaces por archivo.
El enlace físico a directorios normalmente está restringido al superusuario.
Los enlaces duros normalmente no pueden cruzar los límites del sistema de archivos.
El nombre de ruta especial punto ( "." ) es un enlace físico a su directorio padre. El nombre de ruta especial punto-punto ".." es un enlace físico al directorio que es el padre de su padre.
Ejemplo
#include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; int main() { fs::create_directories("sandbox/subdir"); std::ofstream("sandbox/a").put('a'); // crear archivo regular fs::create_hard_link("sandbox/a", "sandbox/b"); fs::remove("sandbox/a"); // leer del archivo original mediante el enlace físico sobreviviente char c = std::ifstream("sandbox/b").get(); std::cout << c << '\n'; fs::remove_all("sandbox"); }
Salida:
a
Véase también
|
crea un enlace simbólico
(función) |
|
|
devuelve el número de enlaces físicos que referencian al archivo específico
(función) |