Loading

NOM

       mknod - Créer un noeud du système de fichiers

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);

   Exigences  de  macros  de  test  de  fonctionnalités  pour  la  glibc (voir
   feature_test_macros(7)) :

       mknod() : _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500

       mknod() crée un noeud du système de fichiers (fichier, fichier  spécial
       de périphérique ou tube nommé) 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 régulier
       (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.
       Un type de fichier égal à 0 est équivalent à S_IFREG.

       Si le noeud est de type S_IFCHR or S_IFBLK alors dev doit indiquer  les
       numéros  majeurs  et  mineurs  du périphérique associé (makedev(3) peut
       être utile pour construire la valeur de dev). 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 fichiers 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

       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. (Voir aussi path_resolution(7).)

       EEXIST pathname existe déjà. Cela inclut le cas où pathname est un lien
              symbolique, pouvant pointer nulle part.

       EFAULT pathname pointe en‐dehors de l’espace d’adressage accessible.

       EINVAL mode demande la création d’autre chose qu’un  fichier  régulier,
              fichier spécial de périphérique, FIFO ou socket.

       ELOOP  Trop  de  liens  symboliques  ont  été  rencontrés en parcourant
              pathname.

       ENAMETOOLONG
              pathname est trop long.

       ENOENT Un des répertoires du chemin d’accès pathname  n’existe  pas  ou
              est un lien symbolique pointant nulle part.

       ENOMEM Pas assez de mémoire pour le noyau.

       ENOSPC Le  périphérique  contenant pathname n’a pas assez de place pour
              le nouveau noeud.

       ENOTDIR
              Un élément du chemin d’accès pathname n’est pas un répertoire.

       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  privilégié  (sous
              Linux :  n’a pas la capacité CAP_MKNOD). Cette erreur se produit
              également si  le  système  de  fichiers  contenant  pathname  ne
              supporte pas les noeuds du type demandé.

       EROFS  pathname  est placé sur un système de fichiers en lecture seule.

CONFORMITÉ

       SVr4, BSD 4.4, POSIX.1-2001 (mais voir plus loin).

NOTES

       POSIX.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é».
       Toutefois,  aujourd’hui,  on  ne  devrait  jamais utiliser mknod() pour
       cela ; on devrait utiliser mkfifo(3), une fonction spécialement  conçue
       pour cela.

       Sous  Linux  mknod ne peut pas être utilisé pour créer des répertoires.
       Il faut créer les répertoires avec mkdir(2).

       Il y a de nombreux problèmes  avec  le  protocole  sous‐jacent  à  NFS,
       certains d’entre eux pouvant affecter mknod().

VOIR AUSSI

       chmod(2),   chown(2),   fcntl(2),   mkdir(2),   mknodat(2),   mount(2),
       socket(2),  stat(2),  umask(2),   unlink(2),   makedev(3),   mkfifo(3),
       path_resolution(7)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.23 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       être       trouvées      à      l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».