> Linux Reviews > man >

stat

stat

, fstat, lstat krijg bestand status.


  1. stat.2.man


1. stat.2.man

Manpage of STAT

STAT

Section: Systeem Aanroepen (2)
Updated: Mei 13, 1998
Index Return to Main Contents
 

NAAM

stat, fstat, lstat - krijg bestand status.  

OVERZICHT

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

int stat(const char *bestand_naam, struct stat *buf);
int fstat(int bestand_ind, struct stat *buf);
int lstat(const char *bestand_naam, struct stat *buf);  

BESCHRIJVING

Deze functies geven informatie over het opgegeven bestand. Je hebt geen toegangs-rechten tot het bestand nodig om deze informatie te krijgen, maar je moet de zoek-rechten van alle directories hebben, genoemd in de pad leidend naar het bestand.

stat geeft de status van het bestand waar file_name naar wijst, en vult buf in.

lstat is gelijk aan stat, maar de status van de koppeling {"link"} zelf wordt genomen, niet het bestand dat verkregen wordt door de koppelingen te volgen.

fstat is gelijk aan stat, maar het open bestand waar bestand_ind naar wijst (zoals teruggegeven door open(2)) wordt genomen in plaats van bestand_naam.

Ze geven allemaal een stat structuur, welke de volgende velden bevat:

struct stat
{
    dev_t         st_dev;      /* {apparaat} apparaat */
    ino_t         st_ino;      /* {i node} "inode" */
    mode_t        st_mode;     /* {toestand} bescherming */
    nlink_t       st_nlink;    /* {n koppeling} aantal harde
    *                           * koppelingen */
    uid_t         st_uid;      /* {uid} gebruiker ID van eigenaar 
    *                           */
    gid_t         st_gid;      /* {gid} groep ID van eigenaar */
    dev_t         st_rdev;     /* {r aparaat} aparaat soort (als
    *                           * "inode" aparaat) */
    off_t         st_size;     /* {maat} hele grootte, in bytes */
    unsigned long st_blksize;  /* {blok maat} blokgrootte voor 
    *                           * bestandsysteem In/Uit */
    unsigned long st_blocks;   /* {blokken} aantal blokken 
    *                           * toegewezen */
    time_t        st_atime;    /* {toegangs tijd} tijd van de 
    *                           * laatste toegang */
    time_t        st_mtime;    /* {aanpas tijd} tijd van de 
    *                           * laatste aanpassing */
    time_t        st_ctime;    /* {verander tijd} tijd van de 
    *                           * laatste verandering */
};

De waarde st_blocks geeft de grootte van het bestand in 512-byte blokken. De waarde st_blksize geeft de "voorkeur" blokmaat voor voortvarende bestand systeem In/Uit. (Schrijven naar een bestand in kleinere brokken kan een niet-voortvarende lees-verander-herschrijf veroorzaken.)

Niet alle Linux bestandsystemen verwezijnlijken alle tijd-velden. Traditioneel wordt st_atime {*toegangs*} veranderd door mknod(2) {maak node}, utime(2) {je tijd}, read(2) {lees}, write(2) {schrijf}, en truncate(2) {afhakken}.

Traditioneel wordt st_mtime {*aanpassings*} veranderd door mknod(2) {maak node}, utime(2) {je tijd} , and write(2) {schrijf}. De st_mtime {*aanpassings*} wordt niet veranderd voor veranderingen van eigenaar, groep, harde koppeling aantal, of toestand {"mode"}.

Traditioneel wordt st_ctime {*verander*} veranderd door schrijven of door het 'zetten' van "inode" informatie (o.a., eigenaar, groep, koppelingen aantal, toestand, enz.)

De volgende POSIX macros zijn bepaald om het bestand soort te testen:

S_ISLNK(m)
{is koppeling} is het een symbolische koppeling?
S_ISREG(m)
{is normaal} normaal bestand?
S_ISDIR(m)
{is dir} directorie?
S_ISCHR(m)
{is karakter} karakter aparaat?
S_ISBLK(m)
{is blok} blok aparaat?
S_ISFIFO(m)
{is eerst-in-eerst-uit} "fifo"?
S_ISSOCK(m)
{is socket} socket? {"socket"}

De volgende vlaggen worden bepaald voor het st_mode {toestand} veld:

S_IFMT0170000bitmasker voor de bestandsoort bitvelden
S_IFSOCK0140000socket {"socket"}
S_IFLNK0120000{bestand verbind} symbolische koppeling
S_IFREG0100000{best. normaal} normaal bestand
S_IFBLK0060000{best. blok} blok aparaat
S_IFDIR0040000{best. dir} dir
S_IFCHR0020000{best. karakter} karakter aparaat
S_IFIFO0010000{eerst-in-eerst-uit} "fifo"
S_ISUID0004000{zet gebruiker id} zet gebruiker ID bit
S_ISGID0002000{zet groep id} zet groep ID bit (zie onder)
S_ISVTX0001000{zet plakkerig} zet sticky bit (zie onder)
S_IRWXU00700{lees schrijf voer-uit gebruiker} masker voor bestand eigenaar toestemmingen
S_IRUSR00400{lees gebruiker} eigenaar heeft lees toestemming
S_IWUSR00200{schrijf gebruiker} eigenaar heeft schrijf toestemming
S_IXUSR00100{voer-uit gebruiker} eigenaar heeft uitvoer toestemming
S_IRWXG00070{lees schrijf voer-uit groep} masker voor groep toestemmingen
S_IRGRP00040{lees groep} groep heeft lees toestemming
S_IWGRP00020{schrijf groep} groep heeft schrijf toestemming
S_IXGRP00010{voer-uit groep} groep heeft uitvoer toestemming
S_IRWXO00007{lees schrijf voer-uit anderen} masker voor toestemmingen voor anderen (niet in groep)
S_IROTH00004{lees anderen} anderen hebben lees toestemming
S_IWOTH00002{schrijf anderen} anderen hebben schrijf toestemming
S_IXOTH00001{voer-uit anderen} anderen hebben uitvoer toestemming
Het zet GID bit (S_ISGID) heeft verschillende toegewijde toepassingen: Voor een dir geeft het aan dat BSD regels moeten worden gebruikt voor die dir: bestanden daar gemaakt erven hun groep ID van de dir, niet van het geldende gid van het makende proces, en directories daar gemaakt zullen het S_ISGID bit ook gezet hebben. Voor een bestand dat niet het groep uitvoer bit (S_IXGRP) aan heeft staan betekend het verplicht bestand/"record" vergrendelen. Het `sticky' bit (S_ISVTX) op een dir betekend dat een bestand in die dir alleen hernoemd of geschrapt kan worden door de eigenaar van het bestand, door de eigenaar van de dir, en door "root" {root}.  

TERUGGEEF WAARDE

Bij success wordt nul teruggegeven. Bij falen wordt -1 teruggegeven en wordt errno naar behoren gezet.  

FOUTEN

EBADF
{slechte bi.} bestand_bes is slecht.
ENOENT
{geen ingang} Een deel van de weg bestand_naam bestaat niet, of de pad is een leeg string.
ENOTDIR
{geen dir} Een deel van de pad is geen dir.
ELOOP
{cirkel} Teveel symbolische koppelingen werden tegengekomen bij het afdalen van de weg.
EFAULT
{fout} Slecht adres.
EACCES
{toegang} Toegang geweigerd.
ENOMEM
{geen geheugen} Geheugen is op (kernel geheugen).
ENAMETOOLONG
{naam te lang} Bestand naam te lang.
 

VOLDOET AAN

De stat en fstat aanroepen voldoen aan SVr4, SVID, POSIX, X/OPEN, BSD 4.3. de lstat aanroep voldoet aan 4.3BSD en SVr4. SVr4 beschrijft aanvullende fstat fouttoestanden EINTR, ENOLINK, en EOVERFLOW. SVr4 beschrijft aanvullende stat en lstat fouttoestanden EACCES, EINTR, EMULTIHOP, ENOLINK, en EOVERFLOW. Gebruik van de st_blocks en st_blksize velden zou minder overdraagbaar kunnen zijn. (Ze werden bedacht in BSD. Worden niet opgegeven door POSIX. De uitleg verschild tussen systemen, en mogelijk binnen een systeem als NFS mountingen {"mounts"} een rol spelen.)

POSIX beschrijft de S_IFMT, S_IFSOCK, S_IFLNK, S_IFREG, S_IFBLK, S_IFDIR, S_IFCHR, S_IFIFO, S_ISVTX bits niet, maar vereist in plaats daarvan het gebruik van de macro's S_ISDIR(), enz. Unix V7 (en latere systemen) hadden S_IREAD, S_IWRITE, S_IEXEC, waar POSIX de synoniemen S_IRUSR, S_IWUSR, S_IXUSR voorschrijft.  

ANDERE SYSTEMEN

Waardes die in gebruikt waren (of zijn) op verschillende systemen:
hexnaamlsoctaalbeschrijving
f000S_IFMT170000masker voor bestand soort
0000000000SCO buiten-gebruik "inode", BSD onbekende soort
SVID-v2 en XPG2 hebben allebei 0 en 0100000 voor
normale bestand
1000S_IFIFOp|010000"fifo" (pijp met naam)
2000S_IFCHRc020000karakter speciaal (V7)
3000S_IFMPC030000vermeervoudigd karakter speciaal (V7)
4000S_IFDIRd/040000dir (V7)
5000S_IFNAM050000XENIX benoemd speciaal bestand
met twee sub-soorten, zich onderscheidend door
st_rdev waardes 1,2:
0001S_INSEMs000001XENIX semaphore sub-soort van IFNAM
0002S_INSHDm000002XENIX gedeeld gegevens sub-soort van IFNAM
6000S_IFBLKb060000blok speciaal (V7)
7000S_IFMPB070000vermeervoudigd blok speciaal (V7)
8000S_IFREG-100000normaal (V7)
9000S_IFCMP110000VxFS ingedikt
9000S_IFNWKn110000netwerk speciaal (HP-UX)
a000S_IFLNKl@120000symbolische koppeling (BSD)
b000S_IFSHAD130000Solaris schaduw "inode" voor ACL (niet zichtbaar voor gebruikersruimte)
c000S_IFSOCKs=140000socket (BSD; ook "S_IFSOC" op VxFS)
d000S_IFDOORD150000Solaris deur {"door"}
e000S_IFWHTw%160000BSD "whiteout" {vlak-uit} (niet gebruikt voor "inode"

0200S_ISVTX001000`sticky bit': bewaar gewisselde {"swapped"} text zelfs na gebruik (V7)
gereserveerd (SVID-v2)
Op niet-directories: dit bestand niet bufferen {"cache!"} (SunOS)
Op directories: beperkte schrappen vlag (SVID-v4.2)
0400S_ISGID002000zet groep ID bij uitvoeren (V7)
voor directories: gebruik BSD regels voor voortplanting van gid
0400S_ENFMT002000SysV bestand vergrendelen bekrachtiging (gedeeld met S_ISGID)
0800S_ISUID004000zet gebruiker ID bij uitvoering (V7)
0800S_CDF004000dir is een omgevings afhankelijk bestand {"context dependent"} (HP-UX)

Een "sticky" opdracht verscheen in Versie 32V AT&T UNIX.

 

ZIE OOK

chmod(2) {verander toestand}, chown(2) {verander eigenaar}, readlink(2) {lees koppeling}, utime(2) {tijd}

 

VERTALING

Alles wat tussen `{'..`}' staat is aanvullende vertaling, en hoort niet bij de originele handleiding. Deze handleiding uit manpages-dev 1.29 werd vertaald door JHBoersema. Email naar <manpages-nl@nl.linux.org>.

$Id: stat.2,v 1.2 2001/12/21 15:31:47 joostvb Exp $


 

Index

NAAM
OVERZICHT
BESCHRIJVING
TERUGGEEF WAARDE
FOUTEN
VOLDOET AAN
ANDERE SYSTEMEN
ZIE OOK
VERTALING

This document was created by man2html using the manual pages.
Time: 23:25:43 GMT, July 09, 2008

NORSK BOKMÅL - NORSK BOKMÅL - NORSK BOKMÅL - pl