Espacios de nombres
Variantes
Acciones

std::filesystem::create_hard_link

De cppreference.com
 
 
 
Definido en el archivo de encabezado <filesystem>
void create_hard_link( const std::filesystem::path& target,

                       const std::filesystem::path& link );
void create_hard_link( const std::filesystem::path& target,
                       const std::filesystem::path& link,

                       std::error_code& ec ) noexcept;
(desde C++17)

Crea un enlace físico link con su objetivo establecido en target como si fuera por la función link() de POSIX: el nombre de la ruta de acceso target debe existir.

Una vez creado, link y target son dos nombres lógicos que se refieren al mismo archivo (son equivalent). Incluso si se borra el nombre original target, el archivo continúa existiendo y puede accederse como link.

Contenido

[editar] Parámetros

target - La ruta de acceso del archivo o directorio a enlazarse.
link - La ruta de acceso del nuevo enlace físico.
ec - El parámetro de salida para informe de errores en la sobrecarga que no lanza excepciones.

[editar] Valor de retorno

(Ninguno)

[editar] Excepciones

La sobrecarga que no toma un parámetro std::error_code& lanza filesystem::filesystem_error en los errores de la API del sistema operativo subyacente, construido con target como el primer argumento de la ruta de acceso, link como el segundo argumento de la ruta de acceso, y el código de error del sistema operativo como el argumento del código de error. La sobrecarga que toma un parámetro std::error_code& lo establece en el código de error de la API del sistema operativo si una llamada a la API del sistema operativo falla, y ejecuta ec.clear() si no ocurren errores. Cualquier sobrecarga que no está marcada con noexcept puede lanzar std::bad_alloc si la asignación de memoria falla.

[editar] Notas

Algunos sistemas operativos no admiten enlaces físicos en lo absoluto o los admiten solo para archivos regulares.

Algunos sistemas de archivos no admiten enlaces físicos independientemente del sistema operativo: por ejemplo, el sistema de archivos FAT utilizado en tarjetas de memoria y unidades flash.

Algunos sistemas de archivos limitan la cantidad de enlaces por archivo.

El enlace físico a los directorios está típicamente restringido al superusuario.

Los enlaces físicos normalmente no pueden cruzar los límites del sistema de archivos.

El nombre de ruta de acceso especial punto (".") Es un enlace físico a su directorio padre. El nombre de ruta de acceso especial punto-punto es un enlace físico al directorio que es el padre de su padre.

[editar] Ejemplo

#include <iostream>
#include <fstream>
#include <filesystem>
namespace fs = std::filesystem;
 
int main()
{
    fs::create_directories("entorno_aislado/subdir");
    std::ofstream("entorno_aislado/a").put('a'); // crear archivo regular
    fs::create_hard_link("entorno_aislado/a", "entorno_aislado/b");
    fs::remove("entorno_aislado/a");
    // leer del archivo original vía el enlace físico que aún vive
    char c = std::ifstream("entorno_aislado/b").get();
    std::cout << c << '\n';
    fs::remove_all("entorno_aislado");
}

Salida:

a

[editar] Véase también

Crea un enlace simbólico.
(función) [editar]
Devuelve el número de enlaces físicos que se refieren a un archivo específico.
(función) [editar]