unlink - borra un nombre y posiblemente el fichero al que hace
referencia
#include <unistd.h>
int unlink(const char *pathname);
unlink borra un nombre del sistema de ficheros. Si dicho
nombre era el último enlace a un fichero, y ningún proceso
tiene el fichero abierto, el fichero es borrado y el espacio que ocupaba
vuelve a estar disponible.
Si el nombre era el último enlace a un fichero, pero
algún proceso sigue teniendo el fichero abierto, el fichero
seguirá existiendo hasta que el último descriptor de fichero
referente a él sea cerrado.
Si el nombre hacía referencia a un enlace simbólico,
el enlace es eliminado.
Si el nombre hacía referencia a un socket, fifo o
dispositivo, el nombre es eliminado, pero los procesos que tengan el objeto
abierto pueden continuar usándolo.
En caso de éxito, se devuelve cero. En caso de error, se
devuelve -1 y se establece el errno apropiado.
- EACCES
- No se otorga permiso de escritura para el directorio contenido en
pathname al identificador de usuario efectivo del proceso, o uno de
los directorios de pathname no permite búsquedas (no tiene
permiso de ejecución).
- EPERM o
EACCES
- El directorio contenido en pathname tiene puesto el
sticky-bit (S_ISVTX), y el identificador de usuario efectivo
del proceso no es el identificador de usuario del fichero a borrar ni el
del directorio que lo contiene.
- EPERM
(sólo para Linux)
- El sistema de ficheros no permite el borrado de ficheros.
- EPERM
- El sistema no permite el borrado de directorios, o el borrado de
directorios requiere privilegios que el proceso actual no tiene. (Esta es
el código de error recomendado por POSIX.)
- EISDIR
- pathname hace referencia a un directorio. (Este es el valor no
conforme con POSIX devuelto por Linux desde la versión
2.1.132.)
- EBUSY (no en
Linux)
- El fichero pathname no puede ser borrado porque está siendo
usado por el sistema o por otro proceso y la implementación
considera ésto un error.
- EFAULT
- pathname apunta fuera del espacio de direcciones accesible.
- ENAMETOOLONG
- pathname es demasiado largo.
- ENOENT
- Un elemento en pathname no existe o es un enlace simbólico
colgado, o pathname está vacío.
- ENOTDIR
- Un elemento usado como directorio en pathname no es en realidad un
directorio.
- ENOMEM
- No hay suficiente memoria disponible en el núcleo.
- EROFS
- pathname hace referencia a un fichero de un sistema de ficheros de
sólo lectura.
- ELOOP
- Se encontraron demasiados enlaces simbólicos al traducir
pathname.
- EIO
- Ocurrió un error de E/S.
SVr4, SVID, POSIX, X/OPEN, 4.3BSD. SVr4 documenta las condiciones
de error adicionales EINTR, EMULTIHOP, ETXTBSY, ENOLINK.
Algunos hechos desafortunados en el protocolo NFS pueden causar la
desaparición inesperada de ficheros que siguen en uso.