Provided by: manpages-de-dev_0.10-1_all bug

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.

ÜBERBLICK

       #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  Gerätedatei  für  ein
       zeichenorientiertes   Gerät   (character   device)   oder   eine   Gerätedatei   für   ein
       blockorientiertes Gerät (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 für 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 Gerätedatei für ein
       zeichenorientiertes Gerät, eine Gerätedatei für ein blockorientiertes  Gerät  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, erhält die Datei die  Gruppenrechte  des
       Verzeichnisses aus dem heraus sie aufgerufen wird.

RÜCKGABEWERT

       mknod  meldet  bei  Erfolg  '0',  ansonsten wird '-1' zurückgegeben 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 unterstützt.

       EINVAL typ Es wurde versucht, eine andere Datei als eine normale,  eine  Gerätedatei  oder
              eine FIFO zu erstellen.

       EEXIST pathname Der angegebene Dateiname existiert bereits.

       EFAULT pathname zeigt auf einen ungültigen Adressbereich.

       EACCES Das  Verzeichnis,  aus  dem  heraus  die  Datei  aufgerufen  wurde,  erlaubt keinen
              Schreibzugriff,  oder  eins  der  Verzeichnisse  in  pathname  erlaubt  nicht   das
              Ausführen.

       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 verfügbar.

       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 (über)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 ausgebügelt.

       mknod kann nicht  zur  Erstellung  von  Verzeichnissen  oder  zur  Erzeugung  von  Sockets
       verwendet  werden,  weiterhin  ist  es  anderen  als der Superuserin nicht möglich, 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).