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).