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:
Tanya321
Femeie
24 ani
Giurgiu
cauta Barbat
24 - 63 ani
Mihai Sprinceana / SO Linux&Unix / Functia fstatvfs (apel sistem) Moderat de Cristy89, Houssey, cr3us, fireratbat, profu.info, sade5000
Autor
Mesaj Pagini: 1
cr3us
Moderator

Inregistrat: acum 16 ani
Postari: 160
statvfs, fstatvfs - preia statstica fisierelor sistem

Este necesar sa includeti fisierul header(biblioteca):

#include <sys/statvfs.h>

Forma generala:

int statvfs(const char *path, struct statvfs *buf);
int fstatvfs(int fd, struct statvfs *buf); 

Descriere

Functia statvfs intoarce informatie despre un sistem de fisiere montat. Path este calea oricarui sistem de fisiere montat. Buf este un pointer catre o structura statvfs definita ca cea de mai jos:


  struct statvfs {
    unsigned long  f_bsize;    /* file system block size */
    unsigned long  f_frsize;   /* fragment size */
    fsblkcnt_t     f_blocks;   /* size of fs in f_frsize units */
    fsblkcnt_t     f_bfree;    /* # free blocks */
    fsblkcnt_t     f_bavail;   /* # free blocks for non-root */
    fsfilcnt_t     f_files;    /* # inodes */
    fsfilcnt_t     f_ffree;    /* # free inodes */
    fsfilcnt_t     f_favail;   /* # free inodes for non-root */
    unsigned long  f_fsid;     /* file system id */
    unsigned long  f_flag;     /* mount flags */
    unsigned long  f_namemax;  /* maximum filename length */
  };


Aici tipurile fsblkcnt_t si fsfilcnt_t sunt definite in <sys/types.h>. Ambele vor fi declarate ca unsigned long.

Campul f_flag este un bit masca (ale flag-urilor montate pt. mai multe informatii scrieti man mount in consola Linux-ului)


Flag-urile:

ST_RDONLY -sistem de fisiere read only
   
ST_NOSUID -bitii setuid(set user id) si setgid(set group id) sunt ignorati de exec.




Functia fstatvfs- intoarce aceeasi informatie despre un fisier deschis referit de un descriptor fd(file descriptor).

In caz de succes valoarea 0 este intoarsa.

In caz de eroare valoarea -1 este intoarsa si un mesaj de eroare este setat corespunzator.



Erori:


EBADF -fd nu este un descriptor de fisier valid pt.deschiderea fisierului (pt. functia fstatvfs)

EACCES - permisiunea de cautare este interzisa pt.o componenta a prefixului caii (pt.functia statvfs)

ELOOP- prea multe link-uri simbolice gasite in translatarea caii (pt.functia statvfs)

ENAMETOOLONG -numele caii este prea lung (pt.functia statvfs)

ENOENT -fisierul referit de cale nu exista (pt.functia statvfs)

ENOTDIR -o componenta a prefixului caii nu este un director (pt.functia statvfs)

EFAULT -Buf sau path fac referire la o adresa invalida

EINTR -aces apel a fost intrerupt de un semnal

EIO - o eroare I/O a intervenit in timpul citirii din sistemul de fisiere

ENOMEM -memorie insuficienta a nucleului sistemului de operare (insufficient kernel memory)

ENOSYS -sistemul de fisiere nu suporta acest apel
   
EOVERFLOW -cateva valori sunt prea mari pt.a fi reprezentate in structura intoarsa definita mai sus


_______________________________________
Cr3u$

pus acum 15 ani
   
Pagini: 1  

Mergi la