Mihai Sprinceana
Un forum de programare cu de toate. Va astept sa va inscrieti si sa deveniti moderatori. Oricine este binevenit aici sa se inscrie si sa aiba acces la informatie free! Fiecare este liber sa adauge proiecte programe free etc. Ajutati acest forum sa devina o comunitate puternica unde fiecare invata de la fiecare! Tot ce trebuie sa faceti este sa va inregistrati si fiecare contributie se poate dovedi utila in timp! Forumul este free informatia free dk aveti timp liber ajutati si pe ceilalti si invatati si voi in acelasi timp! Haideti sa facem ceva pt.a ne ajuta intre noi!
Cititi regulament postare forum inainte de a posta!
|
Lista Forumurilor Pe Tematici
|
Mihai Sprinceana | Inregistrare | Login
POZE MIHAI SPRINCEANA
Nu sunteti logat.
|
Nou pe simpatie: Giulia22 din Alba
| Femeie 25 ani Alba cauta Barbat 25 - 40 ani |
|
cr3us
Moderator
Inregistrat: acum 16 ani
Postari: 160
|
|
stat, fstat, lstat - preia starea fisierului
Foloseste fisierele header(biblioteca) :
#include <sys/types.h> #include <sys/stat.h> #include <unistd.h>
Structura generala:
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);
Aceste functii intorc informatii despre fisierele specificate. Nu este nevoie sa avem drepturi de acces la fisier pt.a obtine informatii dar avem nevoie de drepturi de cautare in toate directoarele aflate in calea care conduce catre fisier.
Stat - preia starea fisierului punctata de file_name si o completeaza in buf
lstat - este identic cu stat, cu exceptia cazului unui link simbolic
fstat - este identic cu stat , doar fisierului deschis ii este intoarsa stare in locul lui file_name
Toate intorc o structura stat data mai jos si care contine urmatoarele campuri:
struct stat { dev_t st_dev; /* device */ ino_t st_ino; /* inode */ mode_t st_mode; /* protection */ nlink_t st_nlink; /* number of hard links */ uid_t st_uid; /* user ID of owner */ gid_t st_gid; /* group ID of owner */ dev_t st_rdev; /* device type (if inode device) */ off_t st_size; /* total size, in bytes */ blksize_t st_blksize; /* blocksize for filesystem I/O */ blkcnt_t st_blocks; /* number of blocks allocated */ time_t st_atime; /* time of last access */ time_t st_mtime; /* time of last modification */ time_t st_ctime; /* time of last status change */ };
Valoarea st_size ne da marimea fisierului(fisier obisnuit sau symlink) in bytes. Marimea unui fisier symlink este data de dimensiunea numelui caiii.
Valoarea st_blocks da marimea fisierului in blocuri de 512 bytes.
Campul st_atime este schimbat de accesarea fisierului (exemple: execve, mknod, pipe, utime si read . Alte rutine ca mmap nu pot face update pt.campul st_atime.
Campul st_mtime este schimbat de modificari asupra fisierului( mknod, truncate, utime si write).
Acesta nu este schimbat de modificari ale proprietarului sau grupului.
Campul st_ctime este schimbat prin scrierea sau setare informatiei inode (proprietar, grup etc.).
Macro-urile POSIV sunt definite mai jos pt.a verifica tipul fisierului:
S_ISREG(m) is it a regular file? S_ISDIR(m) directory? S_ISCHR(m) character device? S_ISBLK(m) block device? S_ISFIFO(m) fifo? S_ISLNK(m) symbolic link? (Not in POSIX.1-1996.) S_ISSOCK(m) socket? (Not in POSIX.1-1996.)
Urmatoarele flag-uri sunt definite pt. campul st_mode:
S_IFMT 0170000 bitmask for the file type bitfields S_IFSOCK 0140000 socket S_IFLNK 0120000 symbolic link S_IFREG 0100000 regular file S_IFBLK 0060000 block device S_IFDIR 0040000 directory S_IFCHR 0020000 character device S_IFIFO 0010000 fifo S_ISUID 0004000 set UID bit S_ISGID 0002000 set GID bit (see below) S_ISVTX 0001000 sticky bit (see below) S_IRWXU 00700 mask for file owner permissions S_IRUSR 00400 owner has read permission S_IWUSR 00200 owner has write permission S_IXUSR 00100 owner has execute permission S_IRWXG 00070 mask for group permissions S_IRGRP 00040 group has read permission S_IWGRP 00020 group has write permission S_IXGRP 00010 group has execute permission S_IRWXO 00007 mask for permissions for others (not in group) S_IROTH 00004 others have read permission S_IWOTH 00002 others have write permisson S_IXOTH 00001 others have execute permission
RETURN VALUE On success, zero is returned. On error, -1 is returned, and errno is set appropriately. ERRORS
EBADF -campuri eronate
ENOENT - o componenta a caii file_name nu exista sau calea este un sir de caractere vid
ENOTDIR - o componenta a caii nu este un director
ELOOP -prea multe link-uri simbol gasite de-a lungul traversarii caii
EFAULT -adresa eronata
EACCES -acces interzis
ENOMEM -out of memory(kernel memory)
ENAMETOOLONG -nume fisier prea lung
_______________________________________ Cr3u$
|
|
pus acum 15 ani |
|