Provided by: manpages-de-dev_0.5-4.1ubuntu1_all bug

BEZEICHNUNG

       mknod - erstellt eine Spezialdatei

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