UNLINK
Section : Manuel du programmeur Linux (
2)
Mise à jour de la version anglaise : 23 juin 2004
Index
Menu principal
NOM
unlink - Détruire un nom et éventuellement le fichier associé
SYNOPSIS
#include <unistd.h>
int unlink(const char *pathname);
DESCRIPTION
unlink()
détruit un nom dans le système de fichiers.
Si ce nom était le dernier lien sur un fichier, et si aucun processus
n'a ouvert ce fichier, ce dernier est effacé, et l'espace
qu'il utilisait est rendu disponible.
Si le nom était le dernier lien sur un fichier, mais qu'un
processus conserve encore le fichier ouvert, celui-ci continue d'exister
jusqu'à ce que le dernier descripteur le référençant soit fermé.
Si le nom correspond à un lien symbolique, le lien est supprimé.
Si le nom correspond à une socket, une FIFO, ou un périphérique,
le nom est supprimé mais les processus qui ont ouvert l'objet
peuvent continuer à l'utiliser.
VALEUR RENVOYÉE
Cet appel système renvoie 0 s'il réussit ou -1 s'il échoue, auquel cas
errno
contient le code d'erreur.
ERREURS
- EACCES
-
L'accès en écriture au répertoire contenant
pathname
n'est pas autorisé pour l'UID effectif du processus, ou bien
l'un des répertoires de
pathname
n'autorise pas le parcours.
(Voir aussi
path_resolution(7).)
- EBUSY (spécifique Linux)
-
Le fichier
pathname
ne peut pas être détruit avec unlink car il est utilisé par le système ou
par un autre processus, et l'implémentation considère que c'est une erreur.
- EFAULT
-
pathname pointe en dehors de l'espace d'adressage accessible
- EIO
-
Une erreur d'entrée-sortie s'est produite.
- EISDIR
-
pathname est un répertoire.
(Il s'agit d'une erreur non-POSIX renvoyée par Linux depuis la version 2.1.132).
- ELOOP
-
Trop de liens symboliques dans le chemin d'accès
pathname.
- ENAMETOOLONG
-
pathname est trop long.
- ENOENT
-
Un répertoire dans le chemin d'accès
pathname
n'existe pas ou est un lien symbolique pointant nulle part, ou
pathname
est vide.
- ENOMEM
-
Pas assez de mémoire pour le noyau.
- ENOTDIR
-
Un élément du chemin d'accès
pathname
n'est pas un répertoire.
- EPERM
-
Le système ne permet pas la destruction des répertoires avec unlink, ou
cette destruction nécessite des privilèges que le processus appelant
n'a pas.
(Il s'agit d'une erreur conseillée par POSIX, comme indiqué plus haut.
Dans ce cas, Linux renvoie
EISDIR).
- EPERM (spécifique Linux)
-
Le système de fichiers ne permet pas la destruction avec unlink.
- EPERM ou EACCES
-
Le répertoire contenant
pathname
a son sticky bit
(S_ISVTX)
à 1, et l'UID effectif du processus n'est ni celui du fichier ni celui du
répertoire et le processus n'est pas privilégié (sous Linux : n'a pas la
capacité
CAP_FOWNER).
- EROFS
-
pathname
est placé sur un système de fichiers en lecture seule.
CONFORMITÉ
SVr4, BSD 4.3, POSIX.1-2001.
BOGUES
Des problèmes dans le protocole sous-jacent à NFS peuvent
provoquer la disparition inattendue de fichiers encore utilisés.
VOIR AUSSI
rm(1),
chmod(2),
link(2),
mknod(2),
open(2),
rename(2),
rmdir(2),
unlinkat(2),
mkfifo(3),
remove(3),
path_resolution(7),
symlink(7)
TRADUCTION
Ce document est une traduction réalisée par Christophe Blaess
<http://www.blaess.fr/christophe/> le 15 octobre 1996
et révisée le 2 juillet 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation
française de qualité. La version anglaise la plus à jour de ce document est
toujours consultable via la commande : « LANG=C man 2 unlink ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- CONFORMITÉ
-
- BOGUES
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 17 juillet 2008