Provided by:
manpages-de-dev_0.8-1_all 
BEZEICHNUNG
mknod - erstellt eine Spezialdatei
Diese Handbuchseite ist eventuell veraltet. Im Zweifelsfall ziehen Sie
die englischsprachige Handbuchseite zu Rate, indem Sie
man -LC 2 mknod
eingeben.
"UBERBLICK
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int mknod(const char *pathname, mode_t typ, dev_t dev);
BESCHREIBUNG
mknod erstellt eine spezielle Datei (FIFO oder named pipe), eine
Geratedatei fur ein zeichenorientiertes Gerat (character device) oder
eine Geratedatei fur ein blockorientiertes Gerat (block device) mit dem
Namen pathname, spezifiziert durch typ und dev.
typ legt zugleich die Zugriffsrechte und die Art der zu erstellenden
Datei fest. Es sollte eine Verbindung (mit bitweisem ODER) unter der
Verwendung der weiter unten angegebenen Typen und den Zugriffsrechten
fur die neue Datei sein.
Die Zugriffsrechte werden normalerweise durch die umask des Prozesses
festgelegt; die Zugriffsrechte sind also: (typ & ~umask).
Hier sind die verschiedenen Typen: S_IFREG, S_IFCHR, S_IFBLK und
S_IFIFO. Von links nach rechts gelesen ergibt sich als erstes eine
normale, leere Datei, eine Geratedatei fur ein zeichenorientiertes
Gerat, eine Geratedatei fur ein blockorientiertes Gerat und zuletzt ein
FIFO (named pipe).
Bei den Typen S_IFCHR und S_IFBLK legt dev die Major- und die Minor
Nummer der neu erzeugten Datei fest. Bei den anderen Typen wird diese
Angabe ignoriert.
Die neu erzeugte Datei wird von der effektiven UID des Prozesses, der
sie aufruft, besessen. Wenn das Verzeichnis in der sich die Datei
befindet aber das SGID-Bit gesetzt hat, oder das Filesystem unter BSD
gemountet ist, erhalt die Datei die Gruppenrechte des Verzeichnisses
aus dem heraus sie aufgerufen wird.
R"UCKGABEWERT
mknod meldet bei Erfolg '0', ansonsten wird '-1' zuruckgegeben und
errno entsprechend gesetzt.
FEHLERMELDUNGEN
EPERM Tritt auf, wenn jemand anderes als der Superuser versucht eine
Datei zu erstellen, die nicht vom Typ FIFO ist. Kann auch
auftreten, wenn das Dateisystem in der die Datei erstellt werden
soll, den angeforderten Dateityp nicht unterstutzt.
EINVAL typ Es wurde versucht, eine andere Datei als eine normale, eine
Geratedatei oder eine FIFO zu erstellen.
EEXIST pathname Der angegebene Dateiname existiert bereits.
EFAULT pathname zeigt auf einen ungultigen Adressbereich.
EACCES Das Verzeichnis, aus dem heraus die Datei aufgerufen wurde,
erlaubt keinen Schreibzugriff, oder eins der Verzeichnisse in
pathname erlaubt nicht das Ausfuhren.
ENAMETOOLONG
pathname war zu lang.
ENOENT Ein (oder mehrere) Verzeichnisse im Pfad von pathname existieren
nicht, oder es ist ein defekter symbolischer Link vorhanden.
ENOTDIR
Ein (oder mehrere) Bestandteile im Pfad von pathname sind ganz
einfach kein Verzeichnis.
ENOMEM Kein freier Speicher mehr verfugbar.
EROFS Tritt auf, wenn pathname auf einem Read-Only Filesystem liegt,
aber trotzdem Schreibzugriff verlangt.
ELOOP pathname Dateiname zeigt auf einen anderen Dateinamen, der auf
sich selbst zeigt.
ENOSPC Das Dateisystem (Device) auf dem dateiname erstellt werden soll,
hat keinen Platz mehr frei.
FEHLER
In manchen alten Linux-Versionen (z.B. 0.99pl7) erlaubten die normalen
Dateisysteme manchmal die Erstellung von zwei Dateien im gleichen
Verzeichnis mit gleichem Namen. Dies trat aber nur selten - und dann
nur in extrem (uber)belasteten Systemen auf.
Behoben wurde dieser Fehler schon im Minix-Filesystem im Linux 0.99pl8
pre-release und wurde (hoffentlich) in allen anderen Filsystemen kurz
danach auch ausgebugelt.
mknod kann nicht zur Erstellung von Verzeichnissen oder zur Erzeugung
von Sockets verwendet werden, weiterhin ist es anderen als der
Superuserin nicht moglich, andere Dateien als eine FIFO zu erstellen.
Es gibt auch noch einige Ungereimtheiten im Zusammenhang mit NFS.
SIEHE AUCH
read(2), write(2), fcntl(2), close(2), unlink(2), open(2), mkdir(2),
stat(2), umask(2), mount(2), socket(2), socket(2), fopen(3).
Linux 1.0 29. Marz 1994 MKNOD(2)