Provided by: manpages-de-dev_0.10-1_all bug

NAME

       stat, fstat, lstat - Ermittle Dateistatus

       Diese  Handbuchseite ist eventuell veraltet. Im Zweifelsfall ziehen Sie
       die englischsprachige Handbuchseite zu Rate, indem Sie

              man -LC 2 stat

       eingeben.

"UBERSICHT

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

       int stat(const char *file_name, struct stat *buf);
       int fstat(int filedes, struct stat *buf);
       int lstat(const char *file_name, struct stat *buf);

BESCHREIBUNG

       Beim Aufruf geben diese Funktionen Informationen  uber  die  angegebene
       Datei  zuruck.   Dazu  benotigt  man keinerlei Rechte an der angegebene
       Datei, muss aber alle Verzeichnisse im Pfad durchsuchen durfen, der  zu
       der Datei fuhrt.

       stat  liefert  die  Informationen zu der in file_name angegebenen Datei
       und ubergibt diese an buf.

       lstat ist ahnlich stat, nur dass bei Links Informationen zum  Link  und
       nicht zu der bezogenen Datei an buf ubergeben werden.

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

       Alle  Aufrufe  geben  eine  Struktur   vom   Typ   stat   zuruck,   die
       folgendermaBen aufgebaut ist:

           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-Gerat) */
               off_t         st_size;     /* GroBe in Bytes*/
               unsigned long st_blksize;  /* BlockgroBe */
               unsigned long st_blocks;   /* Allozierte Blocks */
               time_t        st_atime;    /* Letzter Zugriff */
               time_t        st_mtime;    /* Letzte Modifikation */
               time_t        st_ctime;    /* Letzte Aenderung */
           };

       st_blocks  gibt  die  GroBe  der  Datei in 512-Byte-Blocks an. Der Wert
       st_blksize gibt die "bevorzugte" BlockgroBe  fur  die  Dateioperationen
       an.   (Eine  Datei mit kleineren Happen zu schreiben kann ineffizientes
       Lesen-Verandern-Wiederschreiben verursachen.)

       Nicht alle von Linux unterstutzten Dateisysteme verwenden alle  Felder.
       Einige  Dateisysteme  konnen  so eingebunden werden, dass Dateizugriffe
       das st_atime nicht modifizieren. (Siehe `noatime' in mount(8).)

       Normalerweise andert sich  st_atime  durch  den  Einsatz  von  exec(2),
       mknod(2),  pipe(2),  utime(2)  und  read(2)  (von mehr als null Bytes).
       Andere Routinen, wie  mmap(2),  konnen,  mussen  aber  nicht,  st_atime
       modifizieren.

       st_mtime   verandert   sich   beim   Einsatz  von  dateimodifizierenden
       Operationen, z. B. durch mknod(2), truncate(2), utime(2)  und  write(2)
       (von   mehr   als  null  Bytes).   Daruber  hinaus  wird  st_mtime  von
       Verzeichnissen durch das Anlegen oder Loschen  von  Dateien  in  diesem
       Verzeichnis  geandert.   st_mtime wird nicht durch Andern von Besitzer,
       Gruppe, Hardlink-Zahler oder Modus verandert.

       st_ctime wird durch Beschreiben oder das Andern der INode-Informationen
       neu gesetzt (also Besitzer, Gruppe, Link-Zahler, Modus etc.).

       Folgende POSIX-Makros sind definiert, um den Dateityp zu uberprufen:

              S_ISREG(m)  regulare Datei,

              S_ISDIR(m)  Verzeichnis,

              S_ISCHR(m)  zeichenorientiertes Gerat,

              S_ISBLK(m)  blockorientiertes Gerat,

              S_ISFIFO(m) FiFo,

              S_ISLNK(m)  symbolische Verknupfung (nicht in POSIX.1-1996) und

              S_ISSOCK(m) Socket (nicht in POSIX.1-1996).

       Folgende Flags sind fur das st_mode-Feld definiert:

       S_IFMT     0017000   Bitmaske fur die Dateityp-Bitfelder
       S_IFSOCK   0140000   Socket
       S_IFLNK    0120000   symbolische Verknupfung
       S_IFREG    0100000   regulare Datei
       S_IFBLK    0060000   blockorientiertes Gerat
       S_IFDIR    0040000   Verzeichnis
       S_IFCHR    0020000   zeichenorientiertes Gerat
       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 fur Besitzerzugriffsrechte
       S_IRUSR    00400     Besitzer hat Lesezugriff
       S_IWUSR    00200     Besitzer hat Schreibzugriff
       S_IXUSR    00100     Besitzer hat Ausfuhrungsrechte
       S_IRWXG    00070     Bitmaske fur Gruppenzugriffsrechte
       S_IRGRP    00040     Gruppe hat Lesezugriff
       S_IWGRP    00020     Gruppe hat Schreibzugriff
       S_IXGRP    00010     Gruppe hat Ausfuhrungsrechte
       S_IRWXO    00007     Bitmaske fur Zugriffsrechte Anderer (nicht in Gruppe)
       S_IROTH    00004     Andere haben Lesezugriff
       S_IWOTH    00002     Andere haben Schreibzugriff
       S_IXOTH    00001     Andere haben Ausfuhrungsrechte

       Das      SGID-Bit      (S_ISGID)     hat     verschiedene     besondere
       Nutzungsmoglichkeiten: Fur 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.  Fur  eine  Datei,  bei  der  das  Bit  fur
       Gruppenausfuhrungsrechte  (S_IXGRP)  nicht  gesetzt  ist,  bedeutet  es
       erzwungenes Locken von Datei/Datensatz.

       Das `Sticky'-Bit (S_ISVTX) an einem  Verzeichnis  bedeutet,  dass  eine
       Datei  in diesem Verzeichnis nur umbenannt und geloscht werden darf vom
       Besitzer der Datei, dem Besitzer des Verzeichnisses, und von Root.

R"UCKGABEWERT

       Erfolg gibt 0, ein Fehler gibt -1 zuruck und setzt errno entsprechend.

   FEHLER
       EBADF  filedes falsch oder nicht vorhanden.

       ENOENT Eine Komponente des Pfades file_name existiert nicht,  oder  der
              Pfad ist eine leere Zeichenkette.

       ENOTDIR
              Eine Komponente des Pfades ist kein Verzeichnis.

       ELOOP  Zu  viele  symbolische  Verknupfungen  wurden entlang des Pfades
              gefunden.

       EACCES Zugriff verweigert.

       ENOMEM Kein Speicher mehr (das bedeutet Speicher im Kernel).

       ENAMETOOLONG
              Dateiname ist zu lang.

KONFORM ZU

       Die stat- und fstat-Aufrufe sind zu SVr4, SVID, POSIX, X/OPEN  und  BSD
       4.3  konform.  Der  lstat-Aufruf  ist konform zu 4.3BSD und SVr4.  SVr4
       dokumentiert die zusatzlichen fstat-Fehlermeldungen EINTR, ENOLINK  und
       EOVERFLOW.   SVr4   dokumentiert  die  zusatzlichen  stat-  unf  lstat-
       Fehlermeldungen  EACCES,  EINTR,  EMULTIHOP,  ENOLINK  und   EOVERFLOW.
       Benutzung  der  st_blocks-  und  st_blksize-Felder kann unter Umstanden
       weniger portabel sein. (Sie wurden in BSD eingefuhrt und sind nicht  in
       POSIX  spezifiziert.  Die Interpretation ist auf verschiedenen Systemen
       unterschiedlich, und moglicherweise auch auf  einem  einzelnen  System,
       wenn es mit NFS eingebundene Dateisysteme gibt.)

       POSIX  beschreibt die Bits S_IFMT, S_IFSOCK, S_IFLNK, S_IFREG, S_IFBLK,
       S_IFDIR,  S_IFCHR,  S_IFIFO  und  S_ISVTX   nicht,   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 nachsten
       POSIX-Standard vorhanden sein; ersteres ist aus SVID 4v2, letzteres aus
       SUSv2.

       Unix V7 (und spatere Systeme) hatten S_IREAD, S_IWRITE und  S_IEXEC  wo
       POSIX die Synonyme S_IRUSR, S_IWUSR und S_IXUSR vorschreibt.

ANDERE SYSTEME

       Werte die von verschiedenen Systemen benutzt wurden oder werden:

       Hex    Name       ls   Oktal    Beschreibung
       f000   S_IFMT          170000   Maske fur Dateityp
       0000                   000000   SCO out-of-service INode, BSD unbekannter Typ
                                       SVID-v2 und XPG2 haben sowohl 0 als auch 0100000
                                       fur gewohnliche 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   regulare Datei (V7)
       9000   S_IFCMP         110000   VxFS komprimiert
       9000   S_IFNWK    n    110000   Netzwerk-Spezialdatei (HP-UX)
       a000   S_IFLNK    l@   120000   symbolische Verknupfung (BSD)
       b000   S_IFSHAD        130000   Solaris Schatten-INode fur ACL (nicht sichtbar fur Nutzer)
       c000   S_IFSOCK   s=   140000   Socket (BSD; auch "S_IFSOC" auf VxFS)
       d000   S_IFDOOR   D>   150000   Solaris Tur (`door')
       e000   S_IFWHT    w%   160000   BSD `whiteout' (nicht fur 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 fur eingeschranktes Loschen (SVID-v4.2)
       0400   S_ISGID         002000   Setze Gruppen-ID bei Ausfuhrung (V7)
                                       fur Verz.: benutze BSD-Semantics fur 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 Ausfuhrung (V7)
       0800   S_CDF           004000   Verzeichnis ist eine kontextabhangige Datei (HP-UX)

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

SIEHE AUCH

       chmod(2), chown(2), readlink(2), utime(2).

DEUTSCH VON

       Jonas  Rovan  <jonas@blitz.de>,  der  das  GerMan-Projekt  fur eine der
       besten Ideen  halt,  die  jemals  gehabt  wurden  und  Andries  Brouwer
       <aeb@win.tue.nl> fur dessen Engagement herzlichst dankt.

       Neufassung   (C)   2001   von   Michael  Piefel  <piefel@informatik.hu-
       berlin.de>.