MKNOD
Section: Manuel du programmeur Linux (2) Updated: 30 juillet 2003 Index
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
CONFORMITÉ
NOTES
VOIR AUSSI
TRADUCTION
NOM
mknod - Créer un noeud du système de fichiers.
SYNOPSIS
DESCRIPTION
mknod
crée un noeud du système de fichiers (fichier, fichier spécial de périphérique ou
tube) appelé
pathname,
avec les attributs
mode
et
dev.
L'argument
mode
définit à la fois les permissions d'utilisation, et le type de noeud
à créer. C'est une combinaison par
OU binaire
( | )
entre l'un des types de noeuds ci-dessous et les permissions d'accès
pour le nouveau noeud.
Les permissions sont modifiées par le
umask
du processus : les permissions effectivement écrites sont
(mode & ~umask).
Le type de noeud doit être l'un des suivants
S_IFREG,
S_IFCHR,
S_IFBLK
S_IFIFO
ou
S_IFSOCK
pour indiquer respectivement un fichier normal (vide à la création),
un fichier spécial mode caractère, un fichier spécial mode bloc,
un tube nommé (FIFO) ou une socket du domaine Unix.
On peut également utiliser 0 pour créer un fichier normal.
Si le noeud est de type
S_IFCHR or S_IFBLK
alors
dev
doit spécifier les numéros majeurs et mineurs du périphérique
associé, pour les autres types de noeuds,
dev
est ignoré.
Si
pathname
existe déjà, ou est un lien symbolique, l'appel échoue avec l'erreur EEXIST.
Le noeud nouvellement créé aura pour propriétaire l'UID effectif
du processus. Si le répertoire contenant ce noeud a son bit
Set-GID à 1, ou si le système de fichier est monté avec une
sémantique BSD, le nouveau noeud héritera de l'appartenance au
groupe de son parent. Sinon il appartiendra au groupe effectif
du processus.
VALEUR RENVOYÉE
mknod
renvoie 0 s'il réussit, ou -1 s'il échoue, auquel cas
errno
contient le code d'erreur.
ERREURS
- EPERM
-
mode
demande la création d'un noeud autre qu'un fichier régulier
une FIFO (tube nommé) ou une socket du domaine Unix, alors que
le processus appelant n'est pas le Super-User. Cette erreur se
produit également si le système de fichier contenant
pathname
ne supporte pas les noeuds du type demandé.
- EINVAL
-
mode
demande la création d'autre chose qu'un fichier normal, fichier
spécial de périphérique, DIFO ou socket.
- EEXIST
-
pathname
existe déjà
- EFAULT
-
pathname pointe en-dehors de l'espace d'adressage accessible.
- EACCES
-
Le répertoire parent n'autorise pas l'écriture au processus, ou l'un
des répertoires de
pathname
n'autorise pas la consultation de son contenu.
- ENAMETOOLONG
-
pathname trop long.
- ENOENT
-
Un répertoire du chemin d'accès
pathname
n'existe pas ou est un lien symbolique pointant nulle part.
- ENOTDIR
-
Un élément utilise dans le chemin
pathname
n'est pas un répertoire.
- ENOMEM
-
Pas assez de mémoire pour le noyau.
- EROFS
-
pathname
serait placé sur un système de fichier en lecture seule.
- ELOOP
-
pathname
contient une référence circulaire (à travers un lien symbolique).
- ENOSPC
-
Le périphérique contenant
pathname
n'a pas assez de place pour le nouveau noeud.
CONFORMITÉ
SVr4 (mais l'appel y nécessite des privilèges, alors qu'il n'y en a
pas besoin dans POSIX), BSD 4.4. La version Linux diffère de celle de
SVr4 en ceci qu'elle n'a pas besoin de privilèges root pour créer des
tubes, et qu'elle ne décrit pas les erreurs EMULTIHOP, ENOLINK, et EINTR.
NOTES
Posix 1003.1-2001 dit : "Le seul usage portable de
mknod()
est réservé à la création de fichiers spéciaux FIFO. Si le
mode
n'est pas S_IFIFO ou si
dev
n'est pas 0, alors le comportement de
mknod()
est indéterminé.
Sous Linux
mknod
ne peut pas être utilisé pour créer des répertoires.
Il faut créer les répertoires avec
mkdir,
et les FIFO avec
mkfifo.
Il y a de nombreux problèmes avec le protocole sous-jacent à NFS, certains
d'entre-eux pouvant affecter
mknod.
VOIR AUSSI
TRADUCTION
Christophe Blaess, 1996-2003.
|