MKNOD(2) Manuel du programmeur Linux MKNOD(2)
NOM
mknod - Créer un noeud du système de fichier.
SYNOPSIS
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int mknod(const char *pathname, mode_t mode, dev_t dev);
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.
mode définit à la fois les permissions d'utilisation, et
le type de noeud à creer. 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 et S_IFIFO pour indiquer respectivement
un fichier normal (vide à la creation), un fichier spécial
mode caractère, un fichier spécial mode bloc, ou un tube
nommé (FIFO). 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é.
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 appar
tiendra 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
tube nommé, alors que le processus appelant n'est
pas le Super-User. Cette erreur se produit égale
ment si le système de fichier contenant pathname ne
supporte pas les noeuds du type demandé.
Linux 10 Décembre 1997 1
MKNOD(2) Manuel du programmeur Linux MKNOD(2)
EINVAL mode demande la création d'autre chose qu'un
fichier normal, fichier spécial de périphérique ou
tube nommé.
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. Cette erreur se pro
duit également si le quota de disque de l'utilisa
teur est depassé.
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.
BUGS
mknod ne peut pas être utilisé pour créer des répertoires
ou des sockets, et ne peut etre appelé que par le
Super-User pour créer des fichiers normaux.
Il y a de nombreux problèmes avec le protocole sous-jacent
à NFS, certains d'entre-eux pouvant affecter mknod.
VOIR AUSSI
read(2), write(2) fcntl(2), close(2), unlink(2), open(2),
mkdir(2), stat(2), umask(2), mount(2), socket(2),
Linux 10 Décembre 1997 2
MKNOD(2) Manuel du programmeur Linux MKNOD(2)
fopen(3).
TRADUCTION
Christophe Blaess, 1997.
Linux 10 Décembre 1997 3