#include <unistd.h>
int link(const char *oldpath, const char
*newpath);
link crea un nuevo enlace (también conocido como
enlace físico) a un fichero existente.
Si newpath existe, no será sobreescrito.
Este nuevo nombre podrá ser usado exactamente igual que el
viejo para cualquier operación; ambos nombres se refieren al mismo
fichero (y por lo tanto, tienen los mismos permisos y propietario) y es
imposible decir qué nombre era el `original'.
Si hubo éxito, se devuelve cero. Si hubo error, se devuelve
-1, y errno se actualiza apropiadamente.
- EXDEV
- oldpath y newpath no están en el mismo sistema de
ficheros.
- EPERM
- El sistema de ficheros que contiene oldpath y newpath no
soporta la creación de enlaces físicos.
- EFAULT
- oldpath o newpath apunta fuera de tu espacio de direcciones
accesibles.
- EACCES
- El acceso de escritura al directorio que contiene newpath no
está permitido para el uid efectivo del proceso, o uno de los
directorios en oldpath o newpath no da permiso de
búsqueda (ejecución).
- ENAMETOOLONG
- oldpath o newpath es demasiado largo.
- ENOENT
- Un componente del directorio en oldpath o newpath no existe
o es un enlace simbólico colgado.
- ENOTDIR
- Un componente usado como directorio en oldpath o newpath no
es, de hecho, un directorio.
- ENOMEM
- Memoria de núcleo insuficiente.
- EROFS
- El fichero está en un sistema de ficheros de sólo
lectura.
- EEXIST
- newpath ya existe.
- EMLINK
- El fichero a que se refiere oldpath ya tiene el número
máximo de enlaces a él.
- ELOOP
- Se han encontrado demasiados enlaces simbólicos al resolver
oldpath o newpath.
- ENOSPC
- El dispositivo que contiene el fichero no tiene espacio para la nueva
entrada de directorio.
- EPERM
- oldpath es un directorio.
- EIO
- Se ha producido un error de E/S.
Los enlaces físicos, tal y como los crea link, no
pueden cruzar sistemas de ficheros. Utiliza symlink si esto es
necesario.
SVr4, SVID, POSIX, BSD 4.3 y X/OPEN. SVr4 documenta las
condiciones de error adicionales ENOLINK y EMULTIHOP; POSIX.1 no documenta
ELOOP. X/OPEN no documenta EFAULT, ENOMEM ni EIO.
En sistemas de ficheros NFS, el valor devuelto podría ser
incorrecto en caso de que el servidor NFS lance la creación del
enlace y muera antes de poder terminarlo. Utiliza stat(2) para
averiguar si se creó el enlace.