mknod - Créer des fichiers spéciaux.
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 fichiers.
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 buffer)
- c
-
pour un fichier spécial en mode caractère (sans buffer)
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.
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.
Christophe Blaess, 1996-2003.