Espacios de nombres
Variantes
Acciones

std::filesystem::create_symlink, std::filesystem::create_directory_symlink

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

                     conststd::filesystem::path& link );
void create_symlink(conststd::filesystem::path& target,
                     conststd::filesystem::path& link,

                     std::error_code& ec )noexcept;
(1) (desde C++17)
void create_directory_symlink(conststd::filesystem::path& target,

                               conststd::filesystem::path& link );
void create_directory_symlink(conststd::filesystem::path& target,
                               conststd::filesystem::path& link,

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

Crea un enlace simbólico link con su objetivo establecido en target como si fuera por la función symlink() de POSIX: el nombre de la ruta de acceso target puede ser inválido o no existir.

Algunos sistemas operativos requieren la creación de enlaces simbólicos para identificar que el enlace sea para un directorio. El código portátil debe usar (2) para crear enlaces simbólicos de directorios en lugar de (1), aunque no hay distinción en los sistemas POSIX.

Contenido

[editar]Parámetros

target - La ruta de acceso a la que apunta el enlace simbólico; no tiene que existir.
link - La ruta de acceso del nuevo enlace simbólico.
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 simbólicos en lo absoluto o los admiten solo para archivos regulares.

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

Igual que un enlace físico, un enlace simbólico permite que un archivo tenga varios nombres lógicos. La presencia de un enlace físico garantiza la existencia de un archivo, incluso después de que se haya eliminado el nombre original. Un enlace simbólico no ofrece tal seguridad; de hecho, el archivo nombrado por el argumento target no necesita existir cuando se crea el enlace. Un enlace simbólico puede cruzar los límites del sistema de archivos.

[editar]Ejemplo

#include <iostream>#include <filesystem>#include <cassert>namespace fs = std::filesystem;   int main(){ fs::create_directories("entorno_aislado/subdir"); fs::create_symlink("objetivo", "entorno_aislado/sym1"); fs::create_directory_symlink("subdir", "entorno_aislado/sym2");   for(auto it = fs::directory_iterator("entorno_aislado"); it != fs::directory_iterator();++it)if(is_symlink(it->symlink_status()))std::cout<<*it <<"->"<< read_symlink(*it)<<'\n';   assert(std::filesystem::equivalent("entorno_aislado/sym2", "entorno_aislado/subdir")); fs::remove_all("entorno_aislado");}

Posible salida:

"entorno_aislado/sym1"->"objetivo" "entorno_aislado/sym2"->"subdir"

[editar]Véase también

(C++17)(C++17)
Determina los atributos de archivo.
Determina los atributos de archivo, verificando el objetivo del enlace simbólico.
(función)[editar]
Obtiene el objetivo de un enlace simbólico.
(función)[editar]
Crea un enlace físico.
(función)[editar]
close