Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ mknod(2) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

mkdir(1)

chmod(2)

exec(2)

umask(2)

mkfifo(3C)

fs(4)

stat(5)

types(5)

mknod(2)                                                           mknod(2)

NAME
     mknod - Verzeichnis, Gerätedatei oder normale Datei erstellen

SYNTAX
     #include <sys/types.h>
     #include <sys/stat.h>

     int mknod(const char *path, modet mode, devt dev);

BESCHREIBUNG
     mknod() erstellt eine neue Datei, die mit dem Pfadnamen angegeben
     wird, auf den path zeigt. Der Dateityp und die Zugriffsrechte der
     neuen Datei werden von mode bestimmt.

     Der in mode angegebene Dateityp wird durch die Bits SIFMT angegeben,
     die einen der folgenden Werte haben müssen:

     SIFIFO    FIFO-Datei
     SIFCHR    zeichenorientierte Datei
     SIFDIR    Verzeichnis
     SIFBLK    blockorientierte Datei
     SIFREG    normale Datei

     Die einzige portierbare Verwendung von mknod() besteht in der Erstel-
     lung einer FIFO-Gerätedatei. Ist mode nicht SIFIFO oder ist dev nicht
     0, ist das Verhalten von mknod() unbestimmt.

     Die Berechtigungen für die neue Datei sind im Argument mode durch den
     logischen Operator OR verknüpft und können aus einer beliebigen Kombi-
     nation der folgenden symbolischen Konstanten ausgewählt werden:

     SISUID   04000   Setzen der Benutzer-ID bei Ausführung
     SISGID   020#0   Setzen der Gruppen-ID, wenn # 7, 5, 3 oder 1 ist.
                       Ermöglichen der Datei-/Satzsperre, wenn # 6, 4, 2
                       oder 0 ist
     SISVTX   01000   Sichern des Textsegments nach Ausführung
     SIRWXU   00700   Lesen, Schreiben, Ausführen durch Eigentümer
     SIRUSR   00400   Lesen durch Eigentümer
     SIWUSR   00200   Schreiben durch Eigentümer
     SIXUSR   00100   Ausführen bzw. Durchsuchen durch Eigentümer
     SIRWXG   00070   Lesen, Schreiben, Ausführen durch Gruppe
     SIRGRP   00040   Lesen durch Gruppe
     SIWGRP   00020   Schreiben durch Gruppe
     SIXGRP   00010   Ausführen durch Gruppe
     SIRWXO   00007   Lesen, Schreiben, Ausführen bzw. Durchsuchen durch
                       andere
     SIROTH   00004   Lesen durch andere
     SIWOTH   00002   Schreiben durch andere
     SIXOTH   00001   Ausführen durch andere






Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

mknod(2)                                                           mknod(2)

     Die Benutzer-ID der Datei wird auf die effektive Benutzer-ID des Pro-
     zesses gesetzt. Die Gruppen-ID wird auf die effektive Gruppen-ID des
     Prozesses gesetzt. Sollte aber das SISGID-Bit im übergeordneten Ver-
     zeichnis gesetzt sein, wird die Gruppen-ID des übergeordneten Ver-
     zeichnisses übernommen. Wenn die Gruppen-ID nicht mit der effektiven
     Gruppen-ID oder einer unterstützten Gruppen-ID übereinstimmt, wird das
     SISGID-Bit gelöscht.

     Die Zugriffsberechtigungsbits in mode werden durch die Dateimodus-
     Erstellungsmaske des Prozesses geändert: Alle Bits, die in der
     Dateimodus-Erstellungsmaske gesetzt sind, werden gelöscht [siehe
     umask(2)]. Falls mode eine zeichen- oder blockorientierte Datei
     angibt, ist dev die konfigurationsabhängige Angabe dieser Datei. Falls
     mode keine zeichen- oder blockorientierte Datei angibt, wird dev igno-
     riert.

     Bei erfolgreicher Ausführung kennzeichnet mknod die Felder statime,
     stctime und stmtime der Datei zur Aktualisierung. Auch die Felder
     stctime und stmtime des Verzeichnisses, das den neuen Eintrag ent-
     hält, werden zur Aktualisierung gekennzeichnet.

     Nur ein Prozeß mit den entsprechenden Berechtigungen kann mknod() für
     andere Dateitypen als für FIFO-Gerätedateien aufrufen.

     Wenn path ein symbolischer Link ist, wird er nicht verfolgt.

FEHLER
     Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
     Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
     errno(5).

     mknod() schlägt fehl und erstellt keine neue Datei, wenn einer der
     folgenden Punkte wahr ist:

     EEXIST        Die angegebene Datei ist bereits vorhanden.

     EINVAL        dev ist ungültig.

     EFAULT        path weist über den zugewiesenen Adreßraum des Prozesses
                   hinaus.

     ELOOP         Bei der Auflösung von path wurden zu viele symbolische
                   Links angetroffen.

     EMULTIHOP     Komponenten von path erfordern den Sprung auf mehrere
                   ferne Rechner, und der Dateisystemtyp läßt dies nicht
                   zu.

     ENAMETOOLONG  Die Länge des Arguments path überschreitet PATHMAX,
                   oder die Länge einer Komponente von path überschreitet
                   NAMEMAX.



Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

mknod(2)                                                           mknod(2)

     ENOTDIR       Eine Komponente des Pfadpräfixes ist kein Verzeichnis.

     ENOENT        Eine Komponente des Pfadpräfixes existiert nicht oder
                   ist ein leerer Pfadname.

     EROFS         Das Verzeichnis, in dem die Datei erstellt werden soll,
                   ist in einem Dateisystem, das nur gelesen werden kann.

     EINTR         Während des Systemaufrufs mknod() wurde ein Signal emp-
                   fangen.

     ENOLINK       path verweist auf einen fernen Rechner und die Verbin-
                   dung zu diesem Rechner ist nicht mehr aktiv.

     EPERM         Der aufrufende Prozeß verfügt nicht über die entspre-
                   chenden Berechtigungen, und bei dem Dateityp handelt es
                   sich nicht um eine FIFO-Gerätedatei.

     EACCES        Eine Komponente des Pfads darf nicht durchsucht werden,
                   oder die Schreibberechtigung für das übergeordnete Ver-
                   zeichnis wird verweigert.

     EIO           Während des Zugriffs auf das Dateisystem ist ein E/A-
                   Fehler aufgetreten.

     ENOSPC        Das Verzeichnis, das die neue Datei enthalten soll, kann
                   nicht erweitert werden, oder das Dateisystem verfügt
                   nicht mehr über genügend Ressourcen zur Dateizuordnung.

     Die Funktion mknod() kann bei folgender Bedingung fehlschlagen:

     ENAMETOOLONG  Die Auflösung des Pfadnamens eines symbolischen Links
                   hat ein Zwischenergebnis erzeugt, dessen Länge PATHMAX
                   überschreitet.

ERGEBNIS
     Bei erfolgreicher Ausführung wird 0 zurückgegeben. Ansonsten wird -1
     zurückgegeben und errno zur Anzeige des Fehlers gesetzt.

SIEHE AUCH
     mkdir(1), chmod(2), exec(2), umask(2), mkfifo(3C), fs(4), stat(5),
     types(5).












Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026