File: stat.2

package info (click to toggle)
manpages-de 0.4-8
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 3,808 kB
  • ctags: 4
  • sloc: sh: 7,666; makefile: 60
file content (349 lines) | stat: -rw-r--r-- 11,701 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
'\" t
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
.\" Parts Copyright (c) 1995 Nicolai Langfeldt (janl@ifi.uio.no), 1/1/95
.\" Deutsche Uebersetzung 1995 by Jonas Rovan
.\"
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one
.\" 
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\" 
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\"
.\" Modified by Michael Haardt (u31b3hs@pool.informatik.rwth-aachen.de)
.\" Modified Sat Jul 24 10:54:27 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Thu May 18 11:00:31 1995 by Rik Faith (faith@cs.unc.edu)
.\"          to add comments suggested by Todd Larason (jtl@molehill.org)
.\" Modified Fri Jan 31 17:43:02 1997 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified Thu Jan 9 10:20:31 1995 by Martin Schulze (joey@infodrom.north.de)
.\"          to add more error codes suggested by Richard Kettlewell (richard@greenend.org.uk)
.\" Modified Wed May 13 18:46:44 1998 by Michael Haardt <michael@cantor.informatik.rwth-aachen.de>
.\" Modified 990706 by aeb; much of the info under `Other Systems' was
.\"          taken from a net post by Albert Cahalan.
.\" Modified 000107 by aeb: added <sys/types.h> include.
.\" Translation
.\" Modified Thu Feb 08 00:19:35 1996 by Jonas Rovan (jonas@blitz.de) 
.\" Modified Mon Jun 10 23:33:05 1996 by Martin Schulze (joey@linux.de)
.\" Modified March 2001 by Michael Piefel <piefel@informatik.hu-berlin.de>
.\" 
.TH STAT 2 "13. Mai 1998" "Linux" "Systemaufrufe"
.SH "NAME"
stat, fstat, lstat \- Ermittle Dateistatus
.SH "BERSICHT"
.B #include <sys/types.h>
.br
.B #include <sys/stat.h>
.br
.B #include <unistd.h>
.sp
.BI "int stat(const char *" file_name ", struct stat *" buf );
.br
.BI "int fstat(int " filedes ", struct stat *" buf );
.br
.BI "int lstat(const char *" file_name ", struct stat *" buf );
.SH "BESCHREIBUNG"
.PP
Beim Aufruf geben diese Funktionen Informationen ber die angegebene Datei
zurck.  Dazu bentigt man keinerlei Rechte an der angegebene Datei, sehr
wohl aber die Durchsuchungsrechte im allen Verzeichnissen im Pfad, der zu der
Datei fhrt.
.PP
.B stat
liefert die Informationen zu der in  
.I file_name
angegebenen Datei und bergibt diese an
.IR buf .

.B lstat
ist hnlich 
.BR stat ,
nur da bei Links Informationen zum Link und nicht zu der bezogenen Datei an
.IR buf 
bergeben werden.

.B fstat
ist genauso wie 
.BR stat ,
nur wird die offene Datei, auf die
.I filedes
(so wie von
.BR open (2)
zurckgegeben) zeigt, bearbeitet anstatt
.IR file_name .

.PP
Alle Aufrufe geben eine Struktur vom Typ
.I stat
zurck, die folgendermaen aufgebaut ist:
.PP
.RS 4
.nf
struct stat
{
    dev_t         st_dev;      /* Device */
    ino_t         st_ino;      /* INode */
    mode_t        st_mode;     /* Zugriffsrechte */
    nlink_t       st_nlink;    /* Anzahl harter Links */
    uid_t         st_uid;      /* UID des Besitzers */
    gid_t         st_gid;      /* GID des Besitzers */
    dev_t         st_rdev;     /* Typ (wenn INode-Gert) */
    off_t         st_size;     /* Gre in Bytes*/
    unsigned long st_blksize;  /* Blockgre */
    unsigned long st_blocks;   /* Allozierte Blocks */
    time_t        st_atime;    /* Letzter Zugriff */
    time_t        st_mtime;    /* Letzte Modifikation */
    time_t        st_ctime;    /* Letzte Aenderung */
};
.fi
.RE
.PP
.I st_blocks
gibt die Gre der Datei in 512-Byte-Blocks. Der Wert
.IR st_blksize 
gibt die "bevorzugte" Blockgre fr die Dateioperationen an.
(Eine Datei mit kleineren Happen zu schreiben kann ineffizientes
Lesen-Verndern-Wiederschreiben verursachen.)
.PP
Nicht alle von Linux untersttzten Dateisysteme verwenden alle Felder.
Einige Dateisysteme erlauben es, so zu montieren, da Dateizugriffe das
.I st_atime
nicht modifizieren. (Siehe `noatime' in 
.BR mount (8).)

Normalerweise ndert sich
.I st_atime
durch den Einsatz von
.BR exec (2),
.BR mknod (2),
.BR pipe (2),
.BR utime (2)
und
.BR read (2)
(von mehr als null Bytes). Andere Routinen, wie
.BR mmap (2),
knnen, mssen aber nicht,
.I st_atime
modifizieren.

.I st_mtime
verndert sich beim Einsatz von dateimodifizierenden Operationen, z. B. durch
.BR mknod (2),
.BR truncate (2),
.BR utime (2)
und
.BR write (2)
(von mehr als null Bytes).
Darberhinaus wird 
.I st_mtime
von Verzeichnissen durch das Anlegen oder Lschen von Dateien in diesem
Verzeichnis gendert.
.I st_mtime
wird 
.I nicht
durch ndern von Besitzer, Gruppe, Hardlink-Zhler oder Modus verndert.

.I st_ctime
wird durch Beschreiben oder das ndern der INode-Informationen neu gesetzt
(also Besitzer, Gruppe, Link-Zhler, Modus etc.).
.PP
Folgende POSIX-Makros sind definiert, um den Dateityp zu berprfen:
.RS
.TP 1.2i
S_ISREG(m)
regulre Datei,
.TP
S_ISDIR(m)
Verzeichnis,
.TP
S_ISCHR(m)
zeichenorientiertes Gert,
.TP
S_ISBLK(m)
blockorientiertes Gert,
.TP
S_ISFIFO(m)
FiFo,
.TP
S_ISLNK(m)
symbolische Verknpfung (nicht in POSIX.1-1996) und
.TP
S_ISSOCK(m)
Socket (nicht in POSIX.1-1996).
.RE
.PP
Folgende Flags sind fr das
.IR st_mode -Feld
definiert:
.P
.TS
l l l.
S_IFMT	0017000	Bitmaske fr die Dateityp-Bitfelder
S_IFSOCK	0140000	Socket
S_IFLNK	0120000	symbolische Verknpfung
S_IFREG	0100000	regulre Datei
S_IFBLK	0060000	blockorientiertes Gert
S_IFDIR	0040000	Verzeichnis
S_IFCHR	0020000	zeichenorientiertes Gert
S_IFIFO	0010000	FIFO
S_ISUID	0004000	SUID-Bit
S_ISGID	0002000	SGID-Bit (siehe unten)
S_ISVTX	0001000	Sticky-Bit (siehe unten)
S_IRWXU	00700	Bitmaske fr Besitzerzugriffsrechte
S_IRUSR	00400	Besitzer hat Lesezugriff
S_IWUSR	00200	Besitzer hat Schreibzugriff
S_IXUSR	00100	Besitzer hat Ausfhrungsrechte
S_IRWXG	00070	Bitmaske fr Gruppenzugriffsrechte
S_IRGRP	00040	Gruppe hat Lesezugriff
S_IWGRP	00020	Gruppe hat Schreibzugriff
S_IXGRP	00010	Gruppe hat Ausfhrungsrechte
S_IRWXO	00007	Bitmaske fr Zugriffsrechte Anderer (nicht in Gruppe)
S_IROTH	00004	Andere haben Lesezugriff
S_IWOTH	00002	Andere haben Schreibzugriff
S_IXOTH	00001	Andere haben Ausfhrungsrechte
.TE
.P
Das SGID-Bit (S_ISGID) hat verschiedene besondere Nutzungsmglichkeiten:
Fr ein Verzeichnis bedeutet es, das die BSD-Semantik Anwendung findet: Dateien,
die in ihm erzeugt werden, erben die Gruppen-ID des Verzeichnisses und nicht die
effektive Gruppen-ID des erzeugenden Prozesses, und dort erzeugte Verzeichnisse
haben das SGID-Bit ebenfalls gesetzt. Fr eine Datei, bei der das Bit fr
Gruppenausfhrungsrechte (S_IXGRP) nicht gesetzt ist, bedeutet es erzwungenes
Locken von Datei/Datensatz.
.P
Das `Sticky'-Bit (S_ISVTX) an einem Verzeichnis bedeutet, da eine Datei in
diesem Verzeichnis umbenannt und gelscht werden darf nur vom Besitzer der
Datei, dem Besitzer des Verzeichnisses, und von Root.
.SH "RCKGABEWERT"
Erfolg gibt 0, ein Fehler gibt \-1 zurck und setzt
.I errno
entsprechend.
.SS "FEHLER"
.TP
.B EBADF
.I filedes
falsch oder nicht vorhanden.
.TP
.B ENOENT
Eine Komponente des Pfades
.I file_name
existiert nicht, oder der Pfad ist eine leere Zeichenkette.
.TP
.B ENOTDIR
Eine Komponente des Pfades ist kein Verzeichnis.
.TP
.B ELOOP
Zu viele symbolische Verknpfungen wurden entlang des Pfades gefunden.
.TP
.B EACCES
Zugriff verweigert.
.TP
.B ENOMEM
Kein Speicher mehr (das bedeutet Speicher im Kernel).
.TP
.B ENAMETOOLONG
Dateiname ist zu lang.
.SH "KONFORM ZU"
Die
.BR stat -
und
.BR fstat -Aufrufe
sind zu SVr4, SVID, POSIX, X/OPEN und BSD 4.3 konform. Der
.BR lstat -Aufruf
ist konform zu 4.3BSD und SVr4.
SVr4 dokumentiert die zustzlichen
.BR fstat -Fehlermeldungen
EINTR, ENOLINK und EOVERFLOW. SVr4 dokumentiert die zustzlichen
.BR stat -
unf
.BR lstat -Fehlermeldungen
EACCES, EINTR, EMULTIHOP, ENOLINK und EOVERFLOW.
Benutzung der
.IR st_blocks -
und
.IR st_blksize -Felder
kann unter Umstnden weniger portabel sein. (Sie wurden in BSD eingefhrt und
sind nicht in POSIX spezifiziert. Die Interpretation ist auf verschiedenen
Systemen unterschiedlich, und mglicherweise auch auf einem einzelnen System,
wenn es mit NFS montierte Dateisysteme gibt.)
.LP
POSIX beschreibt die Bits S_IFMT, S_IFSOCK, S_IFLNK, S_IFREG, S_IFBLK,
S_IFDIR, S_IFCHR, S_IFIFO und S_ISVTX \fInicht\fR, sondern verlangt stattdessen
die Benutzung der Makros S_ISDIR() etc. Die Makros S_ISLNK und S_ISSOCK finden
sich nicht in POSIX.1-1996, werden aber im nchsten POSIX-Standard vorhanden
sein; ersteres ist aus SVID 4v2, letzteres aus SUSv2.
.LP
Unix V7 (und sptere Systeme) hatten S_IREAD, S_IWRITE und S_IEXEC wo POSIX die
Synonyme S_IRUSR, S_IWUSR und S_IXUSR vorschreibt.
.SH "ANDERE SYSTEME"
Werte die von verschiedenen Systemen benutzt wurden oder werden:
.P
.TS
l l l l l.
Hex	Name	ls	Oktal	Beschreibung
f000	S_IFMT		170000	Maske fr Dateityp
0000			000000	SCO out-of-service INode, BSD unbekannter Typ
				SVID-v2 und XPG2 haben sowohl 0 als auch 0100000
				fr gewhnliche Dateien
1000	S_IFIFO	p|	010000	FiFo (benannte Pipe)
2000	S_IFCHR	c	020000	zeichenorientiertes Spezialdatei (V7)
3000	S_IFMPC		030000	Gemultiplexte zeichenorientiertes Spezialdatei (V7)
4000	S_IFDIR	d/	040000	Verzeichnis (V7)
5000	S_IFNAM		050000	XENIX benannte Spezialdatei
				mit zwei Untertypen, unterschieden durch st_rdev-Werte:
0001	S_INSEM	s	000001	XENIX Semaphore-Untertyp von IFNAM
0002	S_INSHD	m	000002	XENIX geteilte-Daten-Untertyp von IFNAM
6000	S_IFBLK	b	060000	blockorientierte Spezialdatei (V7)
7000	S_IFMPB		070000	Gemultiplexte blockorientierte Spezialdatei (V7)
8000	S_IFREG	-	100000	regulre Datei (V7)
9000	S_IFCMP		110000	VxFS komprimiert
9000	S_IFNWK	n	110000	Netzwerk-Spezialdatei (HP-UX)
a000	S_IFLNK	l@	120000	symbolische Verknpfung (BSD)
b000	S_IFSHAD		130000	Solaris Schatten-INode fr ACL (nicht sichtbar fr Nutzer)
c000	S_IFSOCK	s=	140000	Socket (BSD; auch "S_IFSOC" auf VxFS)
d000	S_IFDOOR	D>	150000	Solaris Tr (`door')
e000	S_IFWHT	w%	160000	BSD `whiteout' (nicht fr INode benutzt)

0200	S_ISVTX		001000	`Sticky'-Bit: Text bleibt auf Swap auch nach Benutzung (V7)
				reserviert (SVID-v2)
				Auf Nicht-Verz.: diese Datei nicht in den Cache (SunOS)
				Auf Verz.: Flag fr eingeschrnktes Lschen (SVID-v4.2)
0400	S_ISGID		002000	Setze Gruppen-ID bei Ausfhrung (V7)
				fr Verz.: benutze BSD-Semantics fr Weitergeben der gid
0400	S_ENFMT		002000	SysV Locken der Datei erzwungen (gleicher Wert wie S_ISGID)
0800	S_ISUID		004000	setze Nutzer-ID bei Ausfhrung (V7)
0800	S_CDF		004000	Verzeichnisse is eine kontextabhngige Datei (HP-UX)
.TE

Ein `sticky'-Befehl tauchte in Version 32V AT&T UNIX auf.

.SH "SIEHE AUCH"
.BR chmod (2),
.BR chown (2),
.BR readlink (2),
.BR utime (2).

.SH "DEUTSCH VON"
Jonas Rovan
.BR <jonas@blitz.de> , 
der das GerMan-Projekt fr eine der besten Ideen hlt, die
jemals gehabt wurden und Andries Brouwer
.B <aeb@win.tue.nl> 
fr dessen Engagement herzlichst dankt.

Neufassung \(co 2001 von Michael Piefel
.BR <piefel@informatik.hu-berlin.de> .