Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       mknod, mknodat - Créer un fichier (special ou ordinaire)

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

       #include <fcntl.h>           /* Définition des constantes  AT_* */
       #include <sys/stat.h>

       int mknodat(int dirfd, const char *pathname, mode_t  mode,dev_t dev) ;

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

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

DESCRIPTION

       mknod()  crée  un nœud 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  nœud  à
       créer. C'est une combinaison par OU binaire « | » entre l'un des types de nœuds ci‐dessous
       et les permissions d'accès pour le nouveau nœud.

       Les permissions sont modifiées par le umask du processus : les  permissions  effectivement
       écrites sont (mode & ~umask).

       Le type de nœud 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 nœud 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 nœuds, dev est ignoré.

       Si pathname existe déjà, ou est un lien symbolique, l'appel échoue avec l'erreur EEXIST.

       Le nœud nouvellement créé aura pour  propriétaire  l'UID  effectif  du  processus.  Si  le
       répertoire contenant ce nœud a son bit Set-GID à 1, ou si le système de fichiers est monté
       avec une sémantique BSD, le nouveau nœud héritera  de  l'appartenance  au  groupe  de  son
       parent. Sinon il appartiendra au groupe effectif du processus.

   mknodat()
       L'appel  système  mknodat()  agit  exactement  de  la même façon que l'appel mknod(2), aux
       différences suivantes près.

       Si le chemin donné dans pathname est relatif, il est interprété par rapport au  répertoire
       référencé  par  le  descripteur  de  fichier  dirfd,  plutôt que par rapport au répertoire
       courant, comme dans mknod(2).

       Si pathname est un chemin relatif, et si dirfd est la valeur spéciale  AT_FDCWD,  pathname
       est  interprété  comme  étant  relatif  au répertoire courant du processus appelant, comme
       mknod(2).

       Si pathname est un chemin absolu, dirfd est ignoré.

       Consultez openat(2) pour une explication de la nécessité de mknodat().

VALEUR RENVOYÉE

       mknod() et mknodat() renvoient 0 si ils réussissent, ou  -1  s'ils  échouent,  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.  (Consultez
              aussi path_resolution(7).)

       EDQUOT Le  quota  utilisateur pour le système de fichiers a été dépassé (usage de blocs de
              disque ou d'inœuds).

       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 nœud.

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

       EPERM  mode  demande  la  création  d'un nœud 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 nœuds du
              type demandé.

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

       Les erreurs supplémentaires suivantes peuvent survenir pour mknodat() :

       EBADF  dirfd n'est pas un descripteur de fichier valable.

       ENOTDIR
              pathname  est relatif, et le descripteur de fichier dirfd est associé à un fichier,
              pas à un répertoire.

VERSIONS

       mknodat() a été ajouté au noyau Linux dans sa version 2.6.16 ; la glibc le gère depuis  la
       version 2.4.

CONFORMITÉ

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

       mknodat() : POSIX.1-2008.

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() et mknodat(2).

VOIR AUSSI

       chmod(2), chown(2), fcntl(2), mkdir(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.65 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

       Depuis   2010,   cette   traduction   est   maintenue   à   l'aide   de    l'outil    po4a
       <http://po4a.alioth.debian.org/>  par l'équipe de traduction francophone au sein du projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Christophe   Blaess   <http://www.blaess.fr/christophe/>   (1996-2003),    Alain    Portal
       <http://manpagesfr.free.fr/>  (2003-2006).  Julien  Cristau  et  l'équipe  francophone  de
       traduction de Debian (2006-2009).

       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> ».