mknod   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (2)
Updated: 26 juillet 2007
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
mknod - Créer un noeud du système de fichiers  



SYNOPSIS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
#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 fonctionalités pour la glibc (voir feature_test_macros(7)) :

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




DESCRIPTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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 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. On peut également utiliser 0 pour créer un fichier normal.

Si le noeud est de type S_IFCHR ou 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 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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
mknod() renvoie 0 s'il réussit, ou -1 s'il échoue, auquel cas errno contient le code d'erreur.  



ERREURS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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à
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
pathname contient une référence circulaire (à travers un lien symbolique).
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.
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 utilise dans le chemin 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 serait placé sur un système de fichiers en lecture seule.
 



CONFORMITÉ   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
SVr4, BSD 4.4, POSIX.1-2001 (mais voir plus loin).  



NOTES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
chmod(2), chown(2), fcntl(2), mkdir(2), mknodat(2), mount(2), socket(2), stat(2), umask(2), unlink(2), mkfifo(3), path_resolution(7)  



TRADUCTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 10 octobre 1996 et révisée le 6 juin 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 mknod ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


 



Sommaire   Début   Suivant   Sommaire   Préc.page.lue   Accueil
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
CONFORMITÉ
NOTES
VOIR AUSSI
TRADUCTION

Table des mots clés   Début   Suivant   Sommaire   Préc.page.lue   Accueil
EACCESERREURS
EEXISTERREURS
EFAULTERREURS
EINVALERREURS
ELOOPERREURS
ENAMETOOLONGERREURS
ENOENTERREURS
ENOMEMERREURS
ENOSPCERREURS
ENOTDIRERREURS
EPERMERREURS
EROFSERREURS



Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:48:49, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional