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:
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:
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
Dit is een handleiding uit manpages-dev 1.29. Alles wat tussen ’{’..’}’ staat is aanvullende vertaling, en hoort niet bij de originele handleiding. Email naar <manpages-nl [AT] nl.org>.
$Id: stat.2,v 1.1.1.1 2004/03/21 21:02:25 cor Exp $