Imported tab->space correction by redhat
[infodrom/manpages-de] / man2 / mknod.2
1 .\" Hey Emacs! This file is -*- nroff -*- source.
2 .\"
3 .\" This manpage is Copyright (C) 1992 Drew Eckhardt;
4 .\"                               1993 Michael Haardt
5 .\"                               1993,1994 Ian Jackson.
6 .\" You may distribute it under the terms of the GNU General
7 .\" Public Licence.  It comes with NO WARRANTY.
8 .\"
9 .\" Übersetzung : Lars J. Brandt <ljbrandt@jorma.ping.de>
10 .\" Modified Mon Jun 10 12:46:10 1996 by Martin Schulze (joey@linux.de)
11 .\"
12 .TH MKNOD 2 "29. März 1994" "Linux 1.0" "Systemaufrufe"
13 .SH BEZEICHNUNG
14 mknod \- erstellt eine Spezialdatei
15 .SH ÜBERBLICK
16 .nf
17 .B #include <sys/types.h>
18 .B #include <sys/stat.h>
19 .B #include <fcntl.h>
20 .B #include <unistd.h>
21 .sp
22 .BI "int mknod(const char *" pathname ", mode_t " typ ", dev_t " dev );
23 .fi
24 .SH BESCHREIBUNG
25 .B mknod
26 erstellt eine spezielle Datei (FIFO oder named pipe), eine Gerätedatei
27 für ein zeichenorientiertes Gerät (character device) oder eine 
28 Gerätedatei für ein blockorientiertes Gerät (block device) mit dem Namen 
29 .IR pathname ", spezifiziert durch " typ " und " dev .
30
31 .I typ
32 legt zugleich die Zugriffsrechte und die Art der zu erstellenden Datei
33 fest.
34 Es sollte eine Verbindung (mit bitweisem ODER) unter der Verwendung 
35 der weiter unten angegebenen Typen und den Zugriffsrechten für 
36 die neue Datei sein.
37
38 Die Zugriffsrechte werden normalerweise durch die 
39 .BR umask
40 des Prozesses festgelegt; die Zugriffsrechte sind also:
41 .BR "(typ & ~umask)" .
42
43 Hier sind die verschiedenen Typen:
44 .BR S_IFREG ", " S_IFCHR ", " S_IFBLK " und " S_IFIFO .
45 Von links nach rechts gelesen ergibt sich als erstes eine normale,
46 leere Datei, eine Gerätedatei für ein zeichenorientiertes Gerät,
47 eine Gerätedatei für ein blockorientiertes Gerät und zuletzt
48 ein FIFO (named pipe).
49
50 Bei den Typen 
51 .BR S_IFCHR " und " S_IFBLK
52 legt
53 .I dev
54 die Major- und die Minor Nummer der neu erzeugten Datei fest.  Bei den 
55 anderen Typen wird diese Angabe ignoriert.
56
57 Die neu erzeugte Datei wird von der effektiven UID des Prozesses,
58 der sie aufruft, besessen.  Wenn das Verzeichnis in der sich die Datei befindet
59 aber das SGID-Bit gesetzt hat, oder das Filesystem unter BSD gemountet
60 ist, erhält die Datei die Gruppenrechte des Verzeichnisses aus dem 
61 heraus sie aufgerufen wird.
62 .SH RÜCKGABEWERT 
63 .BR mknod
64 meldet bei Erfolg '0', ansonsten wird '-1' zurückgegeben und 
65 .I errno
66 entsprechend gesetzt.
67 .SH FEHLERMELDUNGEN
68 .TP
69 .B EPERM
70 Tritt auf, wenn jemand anderes als der Superuser versucht eine Datei
71 zu erstellen, die nicht vom Typ FIFO ist.
72 Kann auch auftreten, wenn das Dateisystem in der die Datei erstellt
73 werden soll, den angeforderten Dateityp nicht unterstützt.
74
75 .TP
76 .B EINVAL
77 .IR typ
78 Es wurde versucht, eine andere Datei als eine normale, eine
79 Gerätedatei oder eine FIFO zu erstellen.
80
81 .TP
82 .B EEXIST
83 .IR pathname
84 Der angegebene Dateiname existiert bereits.
85 .TP
86 .B EFAULT
87 .IR pathname " zeigt auf einen ungültigen Adressbereich. "
88 .TP
89 .B EACCES
90 Das Verzeichnis, aus dem heraus die Datei aufgerufen wurde, erlaubt
91 keinen Schreibzugriff,
92 oder eins der Verzeichnisse in
93 .IR pathname
94 erlaubt nicht das Ausführen.
95 .TP
96 .B ENAMETOOLONG
97 .IR pathname " war zu lang."
98 .TP
99 .B ENOENT
100 Ein (oder mehrere) Verzeichnisse im Pfad von 
101 .I pathname
102 existieren nicht, oder es ist ein defekter symbolischer Link
103 vorhanden.
104 .TP
105 .B ENOTDIR
106 Ein (oder mehrere) Bestandteile im Pfad von
107 .I pathname
108 sind ganz einfach kein Verzeichnis.
109 .TP
110 .B ENOMEM
111 Kein freier Speicher mehr verfügbar.
112 .TP
113 .B EROFS
114 Tritt auf, wenn 
115 .I pathname
116 auf einem Read-Only Filesystem liegt, aber trotzdem Schreibzugriff
117 verlangt.
118 .TP
119 .B ELOOP
120 .I pathname
121 Dateiname zeigt auf einen anderen Dateinamen, der auf sich selbst
122 zeigt.
123 .TP
124 .B ENOSPC
125 Das Dateisystem (Device) auf dem
126 .I dateiname
127 erstellt werden soll, hat keinen Platz mehr frei.
128 .SH FEHLER 
129
130 In manchen alten Linux-Versionen (z.B. 0.99pl7) erlaubten die
131 normalen Dateisysteme manchmal die Erstellung von zwei Dateien 
132 im gleichen Verzeichnis mit gleichem Namen.  Dies trat aber nur selten
133 - und dann nur in extrem (über)belasteten Systemen auf.
134
135 Behoben wurde dieser Fehler schon im Minix-Filesystem im Linux 0.99pl8
136 pre-release und wurde (hoffentlich) in allen anderen Filsystemen kurz
137 danach auch ausgebügelt.
138
139 .B mknod
140 kann nicht zur Erstellung von Verzeichnissen oder zur Erzeugung
141 von Sockets verwendet werden, weiterhin ist es anderen als der Superuserin
142 nicht möglich, andere Dateien als eine FIFO zu erstellen.
143
144 Es gibt auch noch einige Ungereimtheiten im Zusammenhang mit NFS.
145 .SH SIEHE AUCH
146 .BR read (2),
147 .BR write (2),
148 .BR fcntl (2),
149 .BR close (2),
150 .BR unlink (2),
151 .BR open (2),
152 .BR mkdir (2),
153 .BR stat (2),
154 .BR umask (2),
155 .BR mount (2),
156 .BR socket (2),
157 .BR socket (2),
158 .BR fopen (3).