Provided by: manpages-nl-dev_4.15.0-9_all bug

NAAM

       stat, fstat, lstat, fstatat - verkrijg bestand status.

SAMENVATTING

       #include <sys/stat.h>

       int stat(const char *beperk padnaam,
                struct stat *beperk statbuf);
       int fstat(int fd, struct stat *statbuf);
       int lstat(const char *beperk padnaam,
                struct stat *beperk statbuf);

       #include <fcntl.h>           /* Definitie van AT_* constanten */
       #include <sys/stat.h>

       int fstatat(int dirfd, const char *restrict padnaam,
                struct stat *beperk statbuf, int vlaggen);

   Feature Test Macro´s eisen in  glibc (zie feature_test_macros(7)):

       lstat():
           /* Vanaf glibc 2.20 */ _DEFAULT_SOURCE
               || _XOPEN_SOURCE >= 500
               || /* Vanaf glibc 2.10: */ _POSIX_C_SOURCE >= 200112L
               || /* Glibc 2.19 en eerder */ _BSD_SOURCE

       fstatat():
           Vanaf glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Voor glibc 2.10:
               _ATFILE_SOURCE

BESCHRIJVING

       Deze  functies  retourneren  informatie  over  een  bestand  in  de buffer aangewezen door
       statbuf. Er zijn geen rechten vereist op het bestand zelf, maar —in het geval van  stat(),
       fstatat()  en  lstat()—  zijn uitvoer (zoek) rechten vereist op alle mappen in padnaam die
       naar het bestand leiden.

       stat() en fstatat()  geven  informatie  over  het  bestand  aangewezen  door  padnaam;  de
       verschillen voor fstatat() worden hieronder beschreven.

       lstat()  is  gelijk  aan stat(), behalve dat als padnaam een symbolische koppeling is, dan
       informatie over de koppeling zéqlf wordt teruggegeven, en niet van het bestand  waar  naar
       verwezen wordt.

       fstat()  is  gelijk  aan  stat(),  behalve  dat  het  bestand van welk de informatie wordt
       opgevraagd wordt gespecificeerd door de bestandsindicator fd.

   De stat structuur
       Al deze systeem aanroepen retourneren  een stat structuur, die de volgende velden bevat:

           struct stat {
               dev_t         st_dev;      /* ID van het apparaat dat het bestand bevat */
               ino_t         st_ino;      /* inode nummer */
               mode_t        st_mode;     /* bestandstype en modus */
               nlink_t       st_nlink;    /* aantal harde koppelingen */
               uid_t         st_uid;      /* gebruiker ID van eigenaar */
               gid_t         st_gid;      /* groep ID van eigenaar */
               dev_t         st_rdev;     /* apparaat ID (als speciaal bestand)  */
               off_t         st_size;     /* totale grootte, in bytes */
                blksize_t st_blksize;     /* Blok grootte voor bestandssysteem I/O */
               blkcnt_t  st_blocks;      /* Aantal toegekende 512B blokken */

               /* Vanaf Linux 2.6, ondersteund de kernel nanoseconden
                  precisie voor de volgende tijdstempel velden.
                  Voor details over vóór Linux 2.6, zie OPMERKINGEN. */

               struct timespec st_atim;  /* Tijdstip laatste toegang */
               struct timespec st_mtim;  /* Tijdstip laatste wijziging */
               struct timespec st_ctim;  /* Tijdstip laatste status verandering */

           #define st_atime st_atim.tv_sec      /* achterwaartse compatibiliteit */
           #define st_mtime st_mtim.tv_sec
           #define st_ctime st_ctim.tv_sec
           };

       NOTITIE: de volgorde van de velden in de stat structuur  varieert  over  de  verschillende
       architecturen.  Bovendien  toont  bovenstaande  definitie niet de opvul bytes die aanwezig
       kunnen zijn tussen sommige velden op de  diverse  architecturen.  Raadpleeg  de  glibc  en
       kernel broncode als u deze details moet kennen.

       Opmerking:  vanwege  prestatie  redenen  en vanwege de eenvoud, mogen diverse velden in de
       stat structuur status informatie bevatten over verschillende momenten gedurende de uitvoer
       van  de systeem aanroep. Bijvoorbeeld, als st_mode of st_uid werd veranderd door een ander
       proces door de aanroep  van  chmod(2)  of  chown(2),  dan  mag  stat(2)  de  oude  st_mode
       teruggeven, samen met de nieuwe st_uid, of de oude st_uid samen met de nieuwe st_mode.

       De velden in de stat structure zijn als volgt:

       st_dev Dit  veld  beschrijft het apparaat op welk zich het bestand bevind. (De major(3) en
              minor(3) macro´s kunnen bruikbaar zijn om het apparaat ID in dit veld te ontleden.)

       st_ino Dit veld bevat het inode nummer van het bestand.

       st_mode
              Dit veld bevat het type  van  het  bestand  en  mode.  Zie  inode(7)  voor  verdere
              informatie.

       st_nlink
              Dit veld bevat het aantal harde koppelingen naar het bestand.

       st_uid Dit veld bevat het gebruikers ID van de eigenaar van het bestand.

       st_gid Dit veld beat het ID van de groep eigenaar van het bestand.

       st_rdev
              Dit veld beschrijft het apparaat dat dit bestand (inode) voorsteld.

       st_size
              Dit  veld  geeft  de  grootte  van het bestand (als het een regulier bestand of een
              symbolische koppeling is) in bytes. De grootte van de een symbolische koppeling  is
              gelijk aan de lengte van de padnaam die het bevat, zonder de afsluitende nul.

       st_blksize
              Dit   veld  geeft  de  "voorkeur"  blok  grootte  voor  efficiënte  bestandssysteem
              invoer/uitvoer.

       st_blocks
              Dit veld bevat een indicatie van het aantal blokken toegewezen aan het bestand,  in
              512-byte  eenheden.  (Deze  kan  kleiner zijn dan st_size/512 als het bestand gaten
              bevat.)

       st_atime
              Dit is de laatste toegangstijd van de bestands data.

       st_mtime
              Dit is de tijd van de laatste modificatie van de bestands data/.

       st_ctime
              Dit is de tijdsstempel van de laatste status verandering van het bestand (tijd  van
              de laatste verandering van de inode).

       Zie inode(7) voor verdere informatie over de velden hierboven.

   fstatat()
       De  fstatat()   systeem  aanroep  is  een  meer algemeen interface voor het verkrijgen van
       bestandsinformatie dat nog steeds exact hetzelfde gedrag kan bieden van  elk  van  stat(),
       lstat(), and fstat().

       Als  de  padnaam  opgegeven  in  padnaam  relatief  is, dan wordt deze geïnterpreteerd als
       relatief aan de map aangewezen door de bestandsindicator dirfd (in plaats van relatief ten
       opzichte  van  de  huidige werkmap van het aanroepende proces, zoals dit gedaan wordt door
       stat() en lstat() voor een relatieve padnaam).

       Als padnaam relatief is en dirfd heeft de speciale  waarde  AT_FDCWD,  dan  wordt  padnaam
       geïnterpreteerd  als  relatief  ten  opzichte  van  de huidige werkmap van het aanroepende
       proces (zoals stat() en lstat()).

       Als padnaam absoluut is, dan wordt mapbi genegeerd.

       vlaggen kan ofwel 0 zijn, of kan een of meer van de volgende vlaggen ORed bevatten:

       AT_EMPTY_PATH (vanaf Linux 2.6.39)
              Als padnaam een lege tekenreeks is, werk dan op  het  bestand  aangewezen  doorzoek
              dirfd  (die  kan  zijn  verkregen door het gebruik van open(2) O_PATH vlag). In dit
              geval kan dirfd naar elk type bestand wijzen, niet slechts een map, en  het  gedrag
              van  fstatat()  is  vergelijkbaar  met  dat  van  fstat().  Als dirfd gelijk is aan
              AT_FDCWD, dan werkt de aanroep op de huidige werkmap. Deze vlag is Linux-specifiek;
              definieer _GNU_SOURCE om de definiete te verkrijgen.

       AT_NO_AUTOMOUNT (vanaf Linux 2.6.38)
              Koppel de uiteinde ("basename")  component van padnaam niet automatisch aan als het
              een map is met een automatisch aankoppelpunt.  Dit  maakt  het  voor  de  aanroeper
              mogelijk  om  attributen van een automatisch aankoppelpunt te verzamelen (in plaats
              van die van de locatie die aangekoppeld zou worden). Instantieer vanaf  Linux  4.14
              geen   niet-bestaande   naam   in   een   map  die  bedoeld  is  voor  automatische
              aankoppelpunten. Deze vlag heeft geen effect als het aankoppelpunt al  aangekoppeld
              was.

              Beide stat()  en lstat() werken alsof  AT_NO_AUTOMOUNT werd gezet.

              AT_NO_AUTOMOUNT   kan  worden  gebruikt  in  hulpmiddelen die mappen scannen om ter
              voorkoming  van  het   massaal   aankoppelen   van   een   map   van   automatische
              aankoppelpunten.

              De vlag is Linux specifiek; definieer _GNU_SOURCE om zijn definitie te verkrijgen.

       AT_SYMLINK_NOFOLLOW
              Als  padnaam  een  symbolische  koppeling  is,  volg  deze  niet: in plaats daarvan
              retourneer informatie over de  koppeling  zelf,  zoals  lstat().  (Standaard  volgt
              fstatat() symbolische koppelingen, net als stat().)

       Zie openat(2) voor een uitleg over de noodzaak van fstatat().

EIND WAARDE

       Bij  succes  wordt  nul  teruggegeven.  Bij  falen  wordt  -1  teruggegeven en wordt errno
       overeenkomstig gezet.

FOUTEN

       EACCES Het doorzoek recht werd geweigerd voor een van de mappen in de pad voorvoegsel  van
              padnaam. (Zie ook path_resolution(7).)

       EBADF  bi is niet een geldige open-voor-schrijven bestandindicator.

       EBADF  (fstatat())   padnaam  is  relatief  maar  dirfd  is noch AT_FDCWD noch een geldige
              bestandsindicator.

       EFAULT Verkeerd adres.

       EINVAL (fstatat()) Ongeldige vlag opgegeven in vlaggen.

       ELOOP  Teveel symbolische koppelingen werden tegengekomen bij het doorlopen van padnaam.

       ENAMETOOLONG
              padnaam is te lang.

       ENOENT Een map-deel van padnaam zou toegankelijk geweest zijn maar bestaat niet of was een
              zwevende symbolische koppeling.

       ENOENT padnaam is een lege tekenreeks en AT_EMPTY_PATH werd niet opgegeven in vlaggen.

       ENOMEM Geheugen is op (kernel geheugen).

       ENOTDIR
              Een onderdeel in het pad voorvoegsel in padnaam is geen map.

       ENOTDIR
              (fstatat())  padnaam  is  relatief  en  mapbi is een bestandsindicator die naar een
              bestand wijst dat geen map is.

       EOVERFLOW
              padnaam of fd wijst naar een  bestand  waarvan  grootte,  inode  nummer  of  aantal
              blokken  niet kan worden gerepresenteerd in respectievelijk de velden off_t, ino_t,
              of blkcnt_t.  Deze fout kan optreden  wanneer  bij  voorbeeld  een  applicatie  die
              compileert  werd  op  een  32-bit  platform zonder -D_FILE_OFFSET_BITS=64,   stat()
              aanroept op een bestand waarvan de grootte meer is dan (1<<31)-1 bytes.

VERSIES

       fstatat() werd toegevoegd aan Linux  in  kernel  2.6.16;  bibliotheek  ondersteuning  werd
       toegevoegd aan glibc in versie 2.4.

VOLDOET AAN

       stat(), fstat(), lstat(): SVr4, 4.3BSD, POSIX.1-2001, POSIX.1.2008.

       fstatat(): POSIX.1-2008.

       Volgens  POSIX.1-2001,  moet  lstat()  voor  een  symbolische koppeling geldige informatie
       retourneren in het st_size veld en het bestandstype van  het  st_mode  veld  van  de  stat
       structure.  POSIX.1-2008  vernauwt  deze specificatie door te vereisen dat lstat() geldige
       informatie moet retourneren in alle velden behalve de mode bits in st_mode.

       Gebruik van de st_blocks en  st_blksize  velden  is  minder  overdraagbaar.  (Deze  werden
       geïntroduceerd  in  BSD.  De interpretatie verschilt tussen systemen, en mogelijk zelfs op
       een enkel systeem waar NFS koppelingen gebruikt worden.)

OPMERKINGEN

   Tijdstempel velden
       Oudere kernels en oudere standaarden ondersteunden nanoseconden tijdstempel  velden  niet.
       In  plaats  daarvan  waren  er  drie  tijdstempel velden —st_atime, st_mtime, en st_ctime—
       aangeduid als time_t die tijdstempels noteerden in een-seconde precisie.

       Vanaf kernel 2.5.48 ondersteund de  stat  structure  nanoseconden  resolutie  in  de  drie
       bestandstijdstepel   velden.   De  nanoseconden  componenten  van  elke  tijdstempel  zijn
       beschikbaar via namen van de vorm  st_atim.tv_nsec,  mits  geschikte  test  macros  werden
       gedefinieerd.  Nanoseconden  tijdstempels zijn gestandaardiseerd in POSIX.1-2008, en vanaf
       versie 2.12 toont glibc de namen van de nanoseconden componenten als _POSIX_C_SOURCE  werd
       gedefinieerd  met  een waarde 200809L of hoger, of _XOPEN_SOURCE werd gedefinieerd met een
       waarde 700 of hoger. Tot  en  met  glibc  2.19  werd  de  definitie  van  de  nanoseconden
       componenten  ook  gedefinieerd zodra  _BSD_SOURCE of _SVID_SOURCE werden gedefinieerd. Als
       geen van de hier voor genoemde macros werd gedefinieerd dan worden de nanoseconden waarden
       getoond met de namen van de vorm st_atimensec.

   C library/kernel verschillen
       In  de  loop  van  de  tijd  hebben  vergrotingen  van  de  stat structure geleid tot drie
       opeenvolgende versies van stat(0:  sys_stat()  (slot __NR_oldstat),  sys_newstat()   (slot
       __NR_stat),  en  sys_stat64()  (slot  __NR_stat64)   op  32-bit platformen zoals i386.  De
       eerste twee versies waren al aanwezig in Linux 1.0 (hoewel met  verschillende  namen);  de
       laatste  werd  toegevoegd  in Linux 2.4.  Vergelijkbare opmerkingen zijn van toepassing op
       fstat()  en lstat().

       De interne kernel versies van de stat structure die behandelt worden door de verschillende
       versies, zijn respectievelijk:

       __old_kernel_stat
              De originele structure, met nogal kleine velden en zonder opvulling.

       stat   Een  groter  st_ino  veld  en  opvulling  toegevoegd aan verschillende delen van de
              structure om toekomstige uitbreidingen toe te staan.

       stat64 Een nog groter st_ino veld, grotere  st_uid en st_gid velden om in de expansie  van
              UID´s  EN  GID´s  naar  32 bits door Linux-2.4 te voorzien, en verschillende andere
              vergrote velden en meer opvulling in de  structure.  (Diverse  opvul  bytes  werden
              geconsumeerd in Linux 2.6, met de aankomst van 32-bit apparaat ID´s en nanoseconden
              componenten in de tijdstempel velden.)

       De glibc stat() omwikkel functies verbergen deze details  van  de  applicaties,  door  het
       aanroepen  van  de  meest  recente  versie  van  de  systeem  aanroep  die  door de kernel
       beschikbaar wordt gesteld en het opnieuw inpakken van de verkregen informatie indien nodig
       voor oude toepassingen.

       Op  moderne  64-bit  systemen  is  het  leven  eenvoudiger: daar bestaat een enkele stat()
       systeem aanroep en de kernel werkt met een stat structure die velden van voldoende grootte
       bevat.

       De  onderliggende  systeem  aanroep gebruikt door de glibc fstatat() omwikkel functie heet
       eigenlijk fstatat64() of op sommige architecturen newfstatat().

VOORBEELDEN

       Het volgende programma roept lstat() aan en toont geselecteerde velden in de  teruggegeven
       stat structure.

       #include <sys/types.h>
       #include <sys/stat.h>
       #include <stdint.h>
       #include <time.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <sys/sysmacros.h>

       int
       main(int argc, char *argv[])
       {
           struct stat sb;

           if (argc != 2) {
               fprintf(stderr, "Usage: %s <padnaam>\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           if (lstat(argv[1], &sb) == -1) {
               perror("lstat");
               exit(EXIT_FAILURE);
           }

           printf("ID van het bevattende apparaat:  [%jx,%jx]\n",
                   (uintmax_t) major(sb.st_dev),
                   (uintmax_t) minor(sb.st_dev));

           printf("Bestandstype:                ");

           switch (sb.st_mode & S_IFMT) {
           case S_IFBLK:  printf("blok apparaat\n");      break;
           case S_IFCHR:  printf("teken apparaat\n");    break;
           case S_IFDIR:  printf("map\n");              break;
           case S_IFIFO:  printf("FIFO/pijp\n");            break;
           case S_IFLNK:  printf("symbolische koppeling\n"); break;
           case S_IFREG:  printf("regulier bestand\n");   break;
           case S_IFSOCK: printf("socket\n");      break;
           default:       printf("onbekend?\n");     break;
           }

           printf("I-node number:            %ju\n", (uintmax_t) sb.st_ino);

           printf("Mode:                     %jo (octal)\n",
                   (uintmax_t) sb.st_mode);

           printf("Link count:               %ju\n", (uintmax_t) sb.st_nlink);
           printf("Ownership:                UID=%ju   GID=%ju\n",
                   (uintmax_t) sb.st_uid, (uintmax_t) sb.st_gid);

           printf("Voorkeur I/O blok grootte: %jd bytes\n",
                   (intmax_t) sb.st_blksize);
           printf("Bestandsgrootte:                %jd bytes\n",
                   (intmax_t) sb.st_size);
           printf("Toegewezen blokken:         %jd\n",
                   (intmax_t) sb.st_blocks);

           printf("Last status change:       %s", ctime(&sb.st_ctime));
           printf("Last file access:         %s", ctime(&sb.st_atime));
           printf("Last file modification:   %s", ctime(&sb.st_mtime));

           exit(EXIT_SUCCESS);
       }

ZIE OOK

       ls(1),   stat(1),   access(2),   chmod(2),   chown(2),  readlink(2),  statx(2),  utime(2),
       capabilities(7), inode(7), symlink(7)

COLOFON

       Deze  pagina  is  onderdeel  van  release  5.13  van  het  Linux  man-pages-project.   Een
       beschrijving  van  het  project, informatie over het melden van bugs en de nieuwste versie
       van deze pagina zijn op https://www.kernel.org/doc/man-pages/ te vinden.

VERTALING

       De  Nederlandse  vertaling  van  deze  handleiding  is  geschreven   door   Jos   Boersema
       <joshb@xs4all.nl>,  Mario  Blättermann  <mario.blaettermann@gmail.com>  en  Luc Castermans
       <luc.castermans@gmail.com>

       Deze vertaling is vrije documentatie;  lees  de  GNU  General  Public  License  Version  3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  of later over de Copyright-voorwaarden. Er is
       geen AANSPRAKELIJKHEID.

       Indien U fouten in de vertaling van deze handleiding zou vinden,  stuur  een  e-mail  naar
       ⟨debian-l10n-dutch@lists.debian.org⟩.