Hay dos tipos de enlaces, es decir, un enlace suave y un enlace duro a un archivo. La biblioteca C tiene una función link() que crea un nuevo enlace fijo a un archivo existente. La función symlink() para crear un enlace suave. Si el archivo/la ruta del enlace ya existe, no se sobrescribirá. Tanto la función link() como symlink() devuelven 0 en caso de éxito. Si se produce algún error, se devuelve -1 . De lo contrario, ‘errno’ (Número de error) se establece correctamente.
Enlace suave: un enlace suave (también conocido como enlace simbólico) actúa como un puntero o una referencia al nombre del archivo. No accede a los datos disponibles en el archivo original. Si se elimina el archivo anterior, el enlace suave apuntará a un archivo que ya no existe.
Vínculo físico: un vínculo físico actúa como una copia (reflejada) del archivo seleccionado. Accede a los datos disponibles en el archivo original.
Si se elimina el archivo seleccionado anteriormente, el enlace fijo al archivo seguirá conteniendo los datos de ese archivo.
Función para crear un Hard Link:
L = enlace (ARCHIVO1, ARCHIVO2), crea un enlace fijo llamado ARCHIVO2 a un ARCHIVO1 existente.
donde, L es el valor devuelto por la función link().
Función para crear un Soft Link:
sL = enlace simbólico (ARCHIVO1, ARCHIVO2), crea un enlace suave llamado ARCHIVO2 a un ARCHIVO1 existente.
donde, sL es el valor devuelto por la función symlink()
Programa 1: a continuación se muestra el programa en C para crear un enlace fijo a un archivo existente:
C
// C program to create an Hard Link // to the existing file #include <stdio.h> #include <stdlib.h> #include <unistd.h> // Driver Code int main(int argc, char* argv[]) { // Link function int l = link(argv[1], argv[2]); // argv[1] is existing file name // argv[2] is link file name if (l == 0) { printf("Hard Link created" " succuessfuly"); } return 0; }
Producción:
Programa 2: a continuación se muestra el programa C para crear un enlace suave a un archivo existente:
C
// C program to create an Soft Link // to the existing file #include <stdio.h> #include <stdlib.h> #include <unistd.h> // Driver Code int main(int argc, char* argv[]) { // Symlink function int sl = symlink(argv[1], argv[2]); // argv[1] is existing file name // argv[2] is soft link file name if (sl == 0) { printf("Soft Link created" " succuessfuly"); } return 0; }
Producción: