Provided by: manpages-de-dev_1.11-1_all 

BEZEICHNUNG
stat, fstat, lstat, fstatat - Dateistatus ermitteln
ÜBERSICHT
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int stat(const char *Pfadname, struct stat *Puffer);
int fstat(int fd, struct stat *Puffer);
int lstat(const char *Pfadname, struct stat *Puffer);
#include <fcntl.h> /* Definition der AT_*-Konstanten */
#include <sys/stat.h>
int fstatat(int dirfd, const char *Pfadname, struct stat *Puffer,
int Schalter);
Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):
lstat():
/* Glibc 2.19 und früher */ _BSD_SOURCE ||
/* Seit Glibc 2.20 */_DEFAULT_SOURCE ||
_XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* seit Glibc 2.10: */ _POSIX_C_SOURCE >= 200112L
fstatat():
Seit Glibc 2.10:
_XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
Bis Glibc 2.10:
_ATFILE_SOURCE
BESCHREIBUNG
Diese Funktionen geben Informationen über eine Datei im Puffer zurück, auf den buf zeigt. Dazu werden
keinerlei Rechte an der angegebenen Datei benötigt, aber —im Falle von stat(), fstatat() und lstat()—
müssen alle Verzeichnisse im Pfadnamen, der zu der Datei führt, durchsucht werden dürfen.
stat() und fstatat() liefern die Informationen zu der in Pfadname angegebenen Datei und übergibt diese an
fstatat(), wie nachfolgend beschrieben.
lstat() ist ähnlich stat(), nur dass falls Pfadname ein symbolischer Link ist, Informationen zum Link
zurückgegeben werden und nicht zur Datei, auf die der Link zeigt.
fstat ist ähnlich stat, außer dass die Datei, zu der Informationen ermittelt werden sollen, durch den
Dateideskriptor fd angegeben wird.
Alle diese Systemaufrufe geben eine Struktur vom Typ stat zurück, die folgendermaßen aufgebaut ist:
struct stat {
dev_t st_dev; /* Gerät */
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-Gerät) */
off_t st_size; /* Größe in Bytes*/
blksize_t st_blksize; /* Blockgröße für Dateisystem-E/A */
blkcnt_t st_blocks; /* Anzahl der zugewiesenen 512B-Blöcke */
/* Seit Linux 2.6 unterstützt der Kernel Nanosekundengenauigkeit
für die folgenden Zeitstempelfelder.
Für Details vor Linux 2.6 lesen Sie ANMERKUNGEN. */
struct timespec st_atim; /* Zeit des letzten Zugriffs */
struct timespec st_mtim; /* Zeit der letzten Veränderung*/
struct timespec st_ctim; /* Zeit der letzten Statusänderung*/
#define st_atime st_atim.tv_sec /* Rückwärtskompatibilität */
#define st_mtime st_mtim.tv_sec
#define st_ctime st_ctim.tv_sec
};
Hinweis: Die Reihenfolge der Felder in der stat-Struktur ist in den verschiedenen Architekturen nicht
gleich. Außerdem zeigt die oben genannte Definition nicht die Auffüll-Bytes, die in verschiedenen
Architekturen zwischen einigen Feldern vorhanden sind. Im Quellcode von Glibc und Kernel finden Sie bei
Bedarf Details hierzu.
Note: For performance and simplicity reasons, different fields in the stat structure may contain state
information from different moments during the execution of the system call. For example, if st_mode or
st_uid is changed by another process by calling chmod(2) or chown(2), stat() might return the old
st_mode together with the new st_uid, or the old st_uid together with the new st_mode.
Das Feld st_dev beschreibt das Gerät, auf dem sich die Datei befindet. (Die Makros major(3) und minor(3)
können zum Zerlegen der Geräte-ID in diesem Feld nützlich sein.)
Das Feld st_rdev beschreibt das Geräte, das diese Datei (Inode) repräsentiert.
Das Feld st_size zeigt die Größe der Datei (falls es sich um eine reguläre Datei oder einen symbolischen
Link handelt) in Bytes an. Die Größe des symbolischen Links ist die Länge des enthaltenen Pfadnamens ohne
abschließendes Nullbyte.
Das Feld st_blocks gibt die Anzahl der Blöcke, die der Datei zugewiesen sind, in 512-Byte-Einheiten an.
Dies kann kleiner als st_size/512 sein, wenn die Datei Löcher enthält.
Das Feld st_blksize gibt die »bevorzugte« Blockgröße für effiziente E/A-Operationen des Dateisystems an
(Schreiben in eine Datei in kleineren Teilen kann ineffizientes Lesen-Ändern-Schreiben verursachen).
Nicht alle der Linux-Dateisysteme implementieren auch alle Zeitfelder. Einige Dateisystemtypen erlauben
das Einhängen in einer Weise, dass Datei- und/oder Verzeichniszugriffe keine Aktualisierung des Feldes
st_atime bewirken (siehe noatime, nodiratime und relatime in mount(8) sowie diesbezügliche Informationen
in mount(2)). Außerdem wird st_atime nicht aktualisiert, wenn eine Datei mit O_NOATIME geöffnet wird;
siehe open(2).
Das Feld st_atime wird durch Dateizugriffe geändert, zum Beispiel durch execve(2), mknod(2), pipe(2),
utime(2) und read(2) (von mehr als 0 Bytes). Andere Routinen, wie mmap(2), können st_atime ändern, müssen
dies aber nicht.
Das Feld st_mtime verändert sich beim Einsatz von dateimodifizierenden Operationen, z.B. durch mknod(2),
truncate(2), utime(2) und write(2) (von mehr als null Bytes). Außerdem wird st_mtime durch das Anlegen
oder Löschen von Dateien in diesem Verzeichnis geändert. Das Feld st_mtime wird nicht durch Ändern von
Besitzer, Gruppe, Hardlink-Zähler oder Modus verändert.
Das Feld st_ctime wird durch Beschreiben oder Setzen der Inode-Informationen geändert (d.h. Besitzer,
Gruppe, Link-Zähler, Modus etc.).
POSIX refers to the st_mode bits corresponding to the mask S_IFMT (see below) as the file type, the 12
bits corresponding to the mask 07777 as the file mode bits and the least significant 9 bits (0777) as the
file permission bits.
Die folgende Maskenwerte sind für den Dateityp des Feldes st_mode definiert:
S_IFMT 0170000 Bitmaske für das Dateityp-Bitfeld
S_IFSOCK 0140000 Socket
S_IFLNK 0120000 symbolischer Link
S_IFREG 0100000 reguläre Datei
S_IFBLK 0060000 blockorientiertes Gerät
S_IFDIR 0040000 Verzeichnis
S_IFCHR 0020000 zeichenorientiertes Gerät
S_IFIFO 0010000 FIFO
Um beispielsweise eine reguläre Datei zu testen, könnten Sie Folgendes verwenden:
stat(pathname, &sb);
if ((sb.st_mode & S_IFMT) == S_IFREG) {
/* reguläre Datei verarbeiten */
}
Da Tests der obigen Form häufig sind, definiert POSIX zusätzliche Makros, um präzisere Tests des
Dateityps in st_mode zu ermöglichen:
S_ISREG(m) ist es eine reguläre Datei?
S_ISDIR(m) Verzeichnis?
S_ISCHR(m) zeichenorientiertes Gerät?
S_ISBLK(m) blockorientiertes Gerät?
S_ISFIFO(m) FIFO (benannte Pipe)?
S_ISLNK(m) symbolischer Link? (nicht in POSIX.1-1996.)
S_ISSOCK(m) Socket? (Nicht in POSIX.1-1996.)
Der obige Code-Schnipsel sollte daher folgendermaßen geändert werden:
stat(pathname, &sb);
if (S_ISREG(sb.st_mode)) {
/* reguläre Datei verarbeiten */
}
Die Definitionen der meisten der oben genannten Testmakros für Dateitypen werden bereitgestellt, sofern
irgendeines der folgenden Feature-Test-Makros definiert ist: _BSD_SOURCE (in Glibc 2.19 und früher),
_SVID_SOURCE (in Glibc 2.19 und früher) oder _DEFAULT_SOURCE (in Glibc 2.20 und neuer). Zusätzlich werden
Definitionen aller oben genannten Makros außer S_IFSOCK und S_ISSOCK() bereitgestellt, wenn _XOPEN_SOURCE
definiert ist. Die Definition von S_IFSOCK kann auch durch Setzen von _XOPEN_SOURCE auf einen Wert von
500 oder größer erreicht werden.
Die Definition von S_ISSOCK() ist verfügbar, wenn eines der folgenden Feature-Test-Makros definiert ist:
_BSD_SOURCE (in Glibc 2.19 und früher), _DEFAULT_SOURCE (in Glibc 2.20 und früher), _XOPEN_SOURCE mit
einem Wert von 500 oder größer oder _POSIX_C_SOURCE mit einem Wert von 200112L oder größer.
Die folgende Maskenwerte sind für die Dateimodus-Komponente des Felds st_mode definiert:
S_ISUID 04000 SUID-Bit
S_ISGID 02000 SGID-Bit (siehe unten)
S_ISVTX 01000 Sticky-Bit (siehe unten)
S_IRWXU 00700 owner has read, write, and execute permission
S_IRUSR 00400 Besitzer hat Lesezugriff
S_IWUSR 00200 Besitzer hat Schreibzugriff
S_IXUSR 00100 Besitzer hat Ausführungsrechte
S_IRWXG 00070 group has read, write, and execute permission
S_IRGRP 00040 group has read permission
S_IWGRP 00020 Gruppe hat Schreibzugriff
S_IXGRP 00010 Gruppe hat Ausführungsrechte
S_IRWXO 00007 others (not in group) have read, write, and
execute permission
S_IROTH 00004 Andere haben Lesezugriff
S_IWOTH 00002 Andere haben Schreibzugriff
S_IXOTH 00001 Andere haben Ausführungsrechte
Das SGID-Bit (S_ISGID) hat verschiedene besondere Nutzungsmöglichkeiten: Für 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. Für eine Datei, bei der das Bit für
Gruppenausführungsrechte (S_IXGRP) nicht gesetzt ist, bedeutet es erzwungenes Sperren von
Datei/Datensatz.
Das »Sticky«-Bit (S_ISVTX) an einem Verzeichnis bedeutet, dass eine Datei in diesem Verzeichnis nur vom
Besitzer der Datei, dem Besitzer des Verzeichnisses, und von einem privilegierten Prozess umbenannt und
gelöscht werden darf.
fstatat()
Der Systemaufruf fstatat() funktioniert genauso wie stat(), außer den hier beschriebenen Unterschieden.
Falls der in Pfadname übergebene Pfadname relativ ist, wird er als relativ zu dem im Dateideskriptor
dirfd referenzierten Verzeichnis interpretiert (statt relativ zum aktuellen Arbeitsverzeichnis des
aufrufenden Prozesses, wie es bei stat() für einen relativen Pfadnamen erfolgt).
Falls Pfadname relativ ist und dirfd den besonderen Wert AT_FDCWD annimmt, wird Pfadname als relativ zum
aktuellen Arbeitsverzeichnis des aufrufenden Prozesses interpretiert (wie stat()).
Falls Pfadname absolut ist, wird dirfd ignoriert.
Schalter kann entweder 0 sein oder durch bitweises ODER eines oder mehrere der folgenden Schalter gesetzt
haben:
AT_EMPTY_PATH (seit Linux 2.6.39)
Falls Pfadname eine leere Zeichenkette ist, wird mit der Datei gearbeitet, auf die dirfd verweist
(dies kann mit dem O_PATH-Schalter von open(2) ermittelt werden). Falls dirfd AT_FDCWD ist,
erfolgt der Aufruf im aktuellen Arbeitsverzeichnis. In diesem Fall kann sich dirfd auf jeden
Dateityp beziehen, nicht unbedingt ein Verzeichnis. Dieser Schalter ist Linux-spezifisch;
definieren Sie _GNU_SOURCE, um dessen Definition zu ermitteln.
AT_NO_AUTOMOUNT (seit Linux 2.6.38)
Die Terminal-»basename«-Komponente von Pfadname wird nicht automatisch eingehängt, wenn es ein
Verzeichnis ist, das selbst ein Einhängepunkt ist. Dies ermöglicht dem Aufrufenden, Informationen
zu einem Auto-Einhängepunkt zu sammeln, anstatt zu dem Ort, der eingehängt werden würde. Dieser
Schalter kann in Werkzeugen verwendet werden, die Verzeichnisse einlesen, um automatische
Masseneinhängungen eines Verzeichnisses zu verhindern, welches Auto-Einhängepunkte enthält. Der
Schalter AT_NO_AUTOMOUNT ist unwirksam, wenn der Einhängepunkt bereits eingehängt wurde. Dieser
Schalter ist Linux-spezifisch; definieren Sie _GNU_SOURCE, um dessen Definition zu ermitteln.
AT_SYMLINK_NOFOLLOW
Falls Pfadname ein symbolischer Link ist, wird er nicht dereferenziert: Stattdessen werden
Informationen zum Link selbst zurückgegeben, wie lstat(). In der Voreinstellung dereferenziert
fstatat() symbolische Links, wie auch stat().
Lesen Sie openat(2) für eine Beschreibung der Notwendigkeit von fstatat().
RÜCKGABEWERT
Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno entsprechend
gesetzt.
FEHLER
EACCES Der Suchzugriff auf eines der Verzeichnisse im Pfadpräfix von Pfadname wurde verweigert (siehe
auch path_resolution(7)).
EBADF fd ist falsch.
EFAULT Ungültige Adresse
ELOOP Beim Pfaddurchlauf wurden zu viele symbolische Links gefunden.
ENAMETOOLONG
Pfadname ist zu lang.
ENOENT Eine Komponente von Pfadname existiert nicht oder Pfadname ist die leere Zeichenkette.
ENOMEM Kein Speicher mehr (das bedeutet Speicher im Kernel).
ENOTDIR
Eine Komponente des Pfadpräfixes von Pfadname ist kein Verzeichnis.
EOVERFLOW
Pfadname oder fd bezieht sich auf eine Datei, deren Name, Inode-Anzahl oder Anzahl der Blöcke
nicht durch die Typen off_t, ino_t oder blkcnt_t repräsentiert werden kann. Dieser Fehler kann
beispielsweise auftreten, wenn eine auf einer 32-bit-Plattform kompilierte Anwendung ohne
-D_FILE_OFFSET_BITS=64 stat() für eine Datei aufruft, deren Größe (1<<31)-1 Byte übersteigt.
Die folgenden Fehler können zusätzlichen bei fstatat() auftreten:
EBADF dirfd ist kein zulässiger Dateideskriptor.
EINVAL Unzulässiger Schalter in Schalter angegeben.
ENOTDIR
Pfadname ist relativ und dirfd ist ein Dateideskriptor, der sich auf eine Datei statt auf ein
Verzeichnis bezieht.
VERSIONEN
fstatat() wurde zu Linux in Kernel 2.6.16 hinzugefügt; Bibliotheksunterstützung wurde zu Glibc in Version
2.4 hinzugefügt.
KONFORM ZU
stat(), fstat(), lstat(): SVr4, 4.3BSD, POSIX.1-2001, POSIX.1.2008.
fstatat(): POSIX.1-2008.
Entsprechend POSIX.1-2001 benötigt lstat() bei Anwendung auf einen symbolischen Link lediglich im Feld
st_size und im Dateityp des st_mode-Feldes der stat-Struktur gültige Rückgabeinformationen. POSIX.1-2008
engt diese Spezifikation ein, indem lstat() in allen Feldern außer den Modus-Bits in st_mode gültige
Informationen zurückgeben muss.
Die Verwendung der Felder st_blocks und st_blksize kann die Portabilität einschränken. Diese wurden in
BSD eingeführt. Die Interpretation unterscheidet sich auf verschiedenen Systemen, und möglicherweise auf
einem einzelnen System, wenn NFS-Einhängungen bestehen. Falls Sie die Definition der Typen blkcnt_t oder
blksize_t von <sys/stat.h> ermitteln wollen, dann definieren Sie _XOPEN_SOURCE mit einem Wert von 500
oder größer (bevor Sie irgendeine Header-Datei einbeziehen).
POSIX beschreibt die Konstanten S_IFMT, S_IFSOCK, S_IFLNK, S_IFREG, S_IFBLK, S_IFDIR, S_IFCHR, S_IFIFO,
S_ISVTX nicht, sondern verlangt stattdessen die Benutzung der Makros S_ISDIR() etc. Die S_IF*-Konstanten
sind in POSIX.1-2001 und neuer vorhanden.
Die Makros S_ISLNK() und S_ISSOCK() finden sich nicht in POSIX.1-1996, sind aber beide in POSIX.1-2001
vorhanden; ersteres ist aus SVID 4v2, letzteres aus SUSv2.
UNIX V7 (und später) hat S_IREAD, S_IWRITE, S_IEXEC, wobei POSIX die Synonyme S_IRUSR, S_IWUSR, S_IXUSR
vorschreibt.
Andere Systeme
Werte die von verschiedenen Systemen benutzt wurden oder werden:
Hex name ls Oktal Beschreibung
f000 S_IFMT 170000 Maske für Dateityp
0000 000000 SCO out-of-service inode; BSD unknown type;
SVID-v2 and XPG2 have both 0 and 0100000 for
ordinary file
1000 S_IFIFO p| 010000 FIFO (benannte Pipe)
2000 S_IFCHR c 020000 zeichenorientierte Spezialdatei (V7)
3000 S_IFMPC 030000 gemultiplexte zeichenorientierte Spezialdatei (V7)
4000 S_IFDIR d/ 040000 Verzeichnis (V7)
5000 S_IFNAM 050000 XENIX named special file with two subtypes,
distinguished by st_rdev values 1, 2
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 regular (V7)
9000 S_IFCMP 110000 VxFS-komprimiert
9000 S_IFNWK n 110000 Netzwerk-Spezialdatei (HP-UX)
a000 S_IFLNK l@ 120000 symbolischer Link (BSD)
b000 S_IFSHAD 130000 Solaris shadow inode for ACL (not seen by user
space)
c000 S_IFSOCK s= 140000 Socket (BSD; auch »S_IFSOC« auf VxFS)
d000 S_IFDOOR D> 150000 Solaris door
e000 S_IFWHT w% 160000 BSD-»whiteout« (nicht für Inode benutzt)
0200 S_ISVTX 001000 »Sticky«-Bit: Text bleibt auf Swap auch nach
Benutzung (V7)
reserviert (SVID-v2)
Auf Nicht-Verzeichnisse: diese Datei nicht
zwischenspeichern (SunOS)
Auf Verzeichnisse: Schalter für eingeschränktes
Löschen (SVID-v4.2)
0400 S_ISGID 002000 Gruppen-ID bei Ausführung setzen(V7)
Für Verzeichnisse: BSD-Semantik für Weitergeben
der Gruppen-ID benutzen
0400 S_ENFMT 002000 0400 S_ENFMT 002000 SysV Sperren der
Datei erzwungen (gleicher Wert wie S_ISGID)
0800 S_ISUID 004000 set-user-ID on execution (V7)
0800 S_CDF 004000 Verzeichnis ist eine kontextabhängige Datei
(HP-UX)
Ein »sticky«-Befehl tauchte in Version 32V AT&T UNIX auf.
ANMERKUNGEN
Unter Linux löst lstat() generell keine Automounter-Aktion aus, während stat() dies tut (aber siehe
fstatat(2)).
Für die meisten Dateien unterhalb des Verzeichnisses /proc liefert stat() nicht die Dateigröße im Feld
st_size zurück, stattdessen wird das Feld mit dem Wert 0 zurückgeliefert.
Zeitstempelfelder
Ältere Kernel und ältere Standards unterstützen keine Zeitstempel-Felder für Nanosekunden. Stattdessen
gab es die drei Zeitstempel-Felder —st_atime, st_mtime und st_ctime—, angegeben als time_t, die
Zeitstempel mit Sekundengenauigkeit ergaben.
Seit Kernel 2.5.48 unterstützt die stat-Struktur die Nanosekunden-Auflösung für die drei
Zeitstempel-Felder. Die Nanosekunden-Komponenten jedes Zeitstempels sind durch Namen der Form
st_atim.tv_nsec verfügbar, sofern das Feature-Test-Makro _BSD_SOURCE oder _SVID_SOURCE definiert ist.
Nanosekunden-Zeitstempel sind heutzutage standardisiert, beginnend mit POSIX.1-2008, und die Glibc bietet
seit Version 2.12 ebenfalls die Namen der Nanosekunden-Komponenten, wenn _POSIX_C_SOURCE mit dem Wert
200809L oder größer oder _XOPEN_SOURCE mit dem Wert 700 oder größer definiert ist. Falls keines der
erwähnten Makros definiert ist, dann werden die Nanosekunden-Werte mit Namen der Form st_atimensec
angezeigt.
Nanosekunden-Zeitstempel werden von XFS, JFS, Btrfs und ext4 (seit Linux 2.6.23) unterstützt.
Nanosekunden-Zeitstempel werden von ext2, ext3 und Reiserfs nicht unterstützt. Auf Dateisystemen, die für
Zeitstempel keine Sekundenbruchteile unterstützen, wird für die Nanosekunden-Felder der Wert 0
zurückgegeben.
Unterschiede C-Bibliothek/Kernel
Over time, increases in the size of the stat structure have led to three successive versions of stat():
sys_stat() (slot __NR_oldstat), sys_newstat() (slot __NR_stat), and sys_stat64() (slot __NR_stat64) on
32-bit platforms such as i386. The first two versions were already present in Linux 1.0 (albeit with
different names); the last was added in Linux 2.4. Similar remarks apply for fstat() and lstat().
The kernel-internal versions of the stat structure dealt with by the different versions are,
respectively:
__old_kernel_stat
The original structure, with rather narrow fields, and no padding.
stat Larger st_ino field and padding added to various parts of the structure to allow for future
expansion.
stat64 Even larger st_ino field, larger st_uid and st_gid fields to accommodate the Linux-2.4
expansion of UIDs and GIDs to 32 bits, and various other enlarged fields and further
padding in the structure. (Various padding bytes were eventually consumed in Linux 2.6,
with the advent of 32-bit device IDs and nanosecond components for the timestamp fields.)
The glibc stat() wrapper function hides these details from applications, invoking the most recent
version of the system call provided by the kernel, and repacking the returned information if required for
old binaries.
On modern 64-bit systems, life is simpler: there is a single stat() system call and the kernel deals with
a stat structure that contains fields of a sufficient size.
Der der Glibc-Wrapper-Funktion fstatat() zugrunde liegende Systemaufruf ist tatsächlich fstatat64() oder
auf einigen Architekturen newfstatat().
BEISPIEL
Das folgende Programm ruft stat() auf zeigt ausgewählte Felder der zurückgelieferten Struktur stat an.
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char *argv[])
{
struct stat sb;
if (argc != 2) {
fprintf(stderr, "Aufruf: %s <Pfadname>\n", argv[0]);
exit(EXIT_FAILURE);
}
if (stat(argv[1], &sb) == -1) {
perror("stat");
exit(EXIT_FAILURE);
}
printf("Dateityp: ");
switch (sb.st_mode & S_IFMT) {
case S_IFBLK: printf("blockorientiertes Gerät\n"); break;
case S_IFCHR: printf("zeichenorientiertes Gerät\n"); break;
case S_IFDIR: printf("Verzeichnis\n"); break;
case S_IFIFO: printf("FIFO/Pipe\n"); break;
case S_IFLNK: printf("symbolischer Link\n"); break;
case S_IFREG: printf("reguläre Datei\n"); break;
case S_IFSOCK: printf("Socket\n"); break;
default: printf("unbekannt?\n"); break;
}
printf("I-node number: %ld\n", (long) sb.st_ino);
printf("Modus: %lo (oktal)\n",
(unsigned long) sb.st_mode);
printf("Link count: %ld\n", (long) sb.st_nlink);
printf("Ownership: UID=%ld GID=%ld\n",
(long) sb.st_uid, (long) sb.st_gid);
printf("Preferred I/O block size: %ld bytes\n",
(long) sb.st_blksize);
printf("File size: %lld bytes\n",
(long long) sb.st_size);
printf("Blocks allocated: %lld\n",
(long long) sb.st_blocks);
printf("Letzte Statusänderung: %s", ctime(&sb.st_ctime));
printf("Letzter Dateizugriff: %s", ctime(&sb.st_atime));
printf("Letzte Dateiänderung: %s", ctime(&sb.st_mtime));
exit(EXIT_SUCCESS);
}
SIEHE AUCH
ls(1), stat(1), access(2), chmod(2), chown(2), readlink(2), utime(2), capabilities(7), symlink(7)
KOLOPHON
Diese Seite ist Teil der Veröffentlichung 4.04 des Projekts Linux-man-pages. Eine Beschreibung des
Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden
sich unter http://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Jonas Rovan <jonas@blitz.de>, Martin Schulze
<joey@infodrom.org>, Michael Piefel <piefel@debian.org>, Helge Kreutzmann <debian@helgefjell.de> und
Mario Blättermann <mario.blaettermann@gmail.com> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer
bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an
<debian-l10n-german@lists.debian.org>.
Linux 23. Juli 2015 STAT(2)