Namespaces
Variants

std::experimental::filesystem:: create_hard_link

From cppreference.net
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 has
noexcept especificación:
noexcept

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 <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)