mknod
Créer des fichiers spéciaux.
1. mknod.1.man
Manpage of MKNOD
MKNOD
Section: Manuel de l'utilisateur Linux (1)Updated: Novembre 1998
Index Return to Main Contents
NOM
mknod - Créer des fichiers spéciaux.SYNOPSIS
mknod [options] nom {bc} numéro_majeur numéro_mineurmknod [ options ] nom p
Options GNU (forme courte) : [-m mode] [--mode=mode] [--help] [--version]
DESCRIPTION
mknod crée une FIFO, un fichier spécial en mode caractère, ou un fichier spécial en mode bloc, avec le nom indiqué.Un fichier spécial est un ensemble de trois valeurs (une booléenne, et deux entiers) enregistré dans un système de fichiers. La valeur booléenne indique s'il s'agit d'un fichier caractères ou blocs, et les deux entiers correspondent aux numéros majeur et mineur.
Ainsi un fichier spécial ne prend quasiment pas de place sur le disque, et est utilisé pour dialoguer avec le système d'exploitation, pas pour enregistrer des données. Généralement les fichiers spéciaux concernent des périphériques matériels (disques, bandes, ttys, imprimantes) ou des services fournis par le système d'exploitation (/dev/null, /dev/random).
Les fichiers en mode bloc sont des périphériques comme des disques (où les données sont accessibles à travers un numéro de bloc, et où il est intéressant d'avoir une mémoire cache par bloc). Tous les autres périphériques sont en mode caractère. Autrefois, la distinction se faisait autrement. Les entrées-sorties en mode bloc étaient bufferisées, pas les autres.
La commande mknod permet de créer ce type de fichier.
Les arguments fournis à la suite du nom indiquent le type de fichier à créer :
-
- p
- pour une FIFO
- b
- pour un fichier spécial en mode bloc (avec tampon)
- c
- pour un fichier spécial en mode caractère (sans tampon)
La version GNU de mknod dispose de l'option u (« unbuffered ») synonyme de c.
Lorsque l'on crée un fichier spécial bloc ou caractère, les numéros majeur et mineur correspondant au périphérique doivent être précisés après le type de fichier, en décimal, en octal commençant par 0, ou (version GNU seulement) en hexadécimal précédé de 0x. Par défaut le mode de création est 0666 (« a+rw ») moins les bits se trouvant dans le umask.
OPTIONS
- -m, --mode mode
- Indique les autorisations d'accès au fichier, mode étant fourni sous forme symbolique, comme pour chmod(1), les permissions par défaut étant utilisées comme valeur de départ.
OPTIONS STANDARDS GNU
- --help
- Afficher un message d'aide sur la sortie standard, et se terminer normalement.
- --version
- Afficher un numéro de version sur la sortie standard, et se terminer normalement.
- --
- Terminer la liste des options.
CONFORMITÉ
POSIX ne décrit pas cette commande, considérée comme non portable, et recommande d'utiliser plutôt mkfifo(1) pour créer des FIFOs. SVID dispose d'une commande /etc/mknod ayant la même syntaxe mais sans l'option mode.NOTES
Sur un système Linux (1.3.22 ou plus récent) le fichier /usr/src/linux/Documentation/devices.txt contient une liste des noms de périphériques, avec le type, et les numéros majeurs et mineurs.Cette page décrit la version de mknod trouvée dans le paquetage fileutils-4.0, d'autres versions peuvent différer légèrement.
VOIR AUSSI
chmod(1), mkfifo(1), mknod(2)TRADUCTION
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 21 décembre 1996 et révisée le 15 juin 2006.
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=en man 1 mknod ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Index
This document was created by man2html using the manual pages.
Time: 00:22:56 GMT, November 20, 2008
2. mknod.2.man
Manpage of MKNOD
MKNOD
Section: Manuel du programmeur Linux (2)Updated: 23 juin 2004
Index Return to Main Contents
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);
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
- 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(2).)
- 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 normal, 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 fichier contenant pathname ne supporte pas les noeuds du type demandé.
- EROFS
- pathname serait placé sur un système de fichier 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é ».Sous Linux mknod() ne peut pas être utilisé pour créer des répertoires. Il faut créer les répertoires avec mkdir(2), et les FIFO avec mkfifo(2).
Il y a de nombreux problèmes avec le protocole sous-jacent à NFS, certains d'entre-eux pouvant affecter mknod().
VOIR AUSSI
fcntl(2), mkdir(2), mknodat(2), mount(2), path_resolution(2), socket(2), stat(2), umask(2), unlink(2), mkfifo(3)TRADUCTION
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 14 août 2006.
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.
Index
This document was created by man2html using the manual pages.
Time: 00:22:56 GMT, November 20, 2008

