std::filesystem:: create_hard_link
|
Definido en el encabezado
<filesystem>
|
||
|
void
create_hard_link
(
const
std::
filesystem
::
path
&
target,
const std:: filesystem :: path & link ) ; |
(1) | (desde C++17) |
|
void
create_hard_link
(
const
std::
filesystem
::
path
&
target,
const
std::
filesystem
::
path
&
link,
|
(2) | (desde C++17) |
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
Cualquier sobrecarga no marcada como
noexcept
puede lanzar
std::bad_alloc
si la asignación de memoria falla.
Notas
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 <filesystem> #include <fstream> #include <iostream> namespace fs = std::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
|
(C++17)
(C++17)
|
crea un enlace simbólico
(función) |
|
(C++17)
|
devuelve el número de enlaces físicos que referencian al archivo específico
(función) |