Provided by: manpages-nl-dev_4.19.0-7_all bug

NAAM

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

BIBLIOTHEEK

       Standard C bibliotheek  (libc, -lc)

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 structure (zie stat(3type)):

       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.

   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)
              Automount de laatste component van het einde  ("basename") van p[adnaam niet. Vanaf
              Linux 3.1 wordt deze vlag genegeerd. Vanaf Linux 4.11 is deze vlag impliciet.

       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 2.6.16; bibliotheek ondersteuning werd toegevoegd  aan
       glibc 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

   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 <stdint.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <sys/stat.h>
       #include <sys/sysmacros.h>
       #include <time.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:  [%x,%x]\n",
                  major(sb.st_dev),
                  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 teller:               %ju\n", (uintmax_t) sb.st_nlink);
           printf("Eigenaarschap:                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),
       stat(3type), capabilities(7), inode(7), symlink(7)

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⟩.