statvfs() - Unix,Linux系統呼叫 - 技術教學
Tutorials Point


  Unix入門
  Unix Shell程式設計
  高階Unix
  Unix有用參考
  Unix有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考資料     討論論壇     關於TP  

statvfs() - Unix,Linux系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

statvfs, fstatvfs - 獲取檔案系統統計資訊

概要

#include <sys/statvfs.h> 

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

描述

函式statvfs()返回有關已掛載檔案系統的資訊。path是已掛載檔案系統中任何檔案的路徑名。buf是指向statvfs結構的指標,其定義大致如下:

  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 */
  };

這裡,型別fsblkcnt_tfsfilcnt_t<sys/types.h>中定義。兩者都曾經是unsigned long

欄位f_flag是一個位掩碼(掛載標誌,參見mount(8))。POSIX定義的位是:

標籤描述
ST_RDONLY 只讀檔案系統。
ST_NOSUID exec(2)忽略設定使用者ID/設定組ID位。

返回的結構的所有成員在所有檔案系統上是否都有有意義的值是不確定的。

fstatvfs()返回有關由描述符fd引用的開啟檔案相同的 資訊。

返回值

成功時,返回零。發生錯誤時,返回-1,並相應地設定errno

錯誤

錯誤程式碼描述
EACCES (statvfs()) 對path路徑字首的組成部分拒絕搜尋許可權。(另見path_resolution(2)。)
EBADF (fstatvfs()) fd不是有效的開啟檔案描述符。
EFAULT Bufpath指向無效地址。
EINTR 此呼叫被訊號中斷。
EIO 從檔案系統讀取時發生I/O錯誤。
ELOOP (statvfs()) 在轉換path時遇到太多符號連結。
ENAMETOOLONG (statvfs()) path太長。
ENOENT (statvfs()) path引用的檔案不存在。
ENOMEM 可用核心記憶體不足。
ENOSYS 檔案系統不支援此呼叫。
ENOTDIR (statvfs()) path路徑字首的組成部分不是目錄。
EOVERFLOW 某些值太大,無法在返回的結構中表示。

符合標準

Solaris, Irix, POSIX.1-2001

備註

Linux核心有系統呼叫statfs()和fstatfs()來支援此庫呼叫。

當前glibc的實現

   pathconf(path, _PC_REC_XFER_ALIGN);
   pathconf(path, _PC_ALLOC_SIZE_MIN);
   pathconf(path, _PC_REC_MIN_XFER_SIZE);

使用statvfs(path,buf)返回值的f_frsizef_frsizef_bsize欄位。

參見



previous next Printer Friendly

廣告


  

廣告



廣告