linux下獲得已掛載分區的,總空間,可利用空間,自由空間

記錄點點滴滴,以便後續查閱以及跟大家一起探討學習

這個是我用在nvr外接硬盤時用到的查詢分區空間的接口函數

int GetMountSpaceInfo(char *deviceName, long *tsize, long *fsize, long *asize, unsigned char  unit)

{
    /*獲得已掛載分區的,總空間,可利用空間,自由空間*/

    long    bsize;
    char    locate_disk[48];
    struct statfs s;

    memset(locate_disk, 0, 48);
    strcat(locate_disk, deviceName);
    statfs(locate_disk, &s);
    if(unit == MB_TYPE)
    {
        bsize = s.f_bsize >> 10;             // in kbytes
        *tsize = (bsize * s.f_blocks) >> 10;     // in MByte
        *fsize = (bsize * s.f_bfree) >> 10;      // in MByte
        *asize = (bsize * s.f_bavail) >> 10;    // in MByte
    }
    else if(unit == KB_TYPE)
    {
        bsize = s.f_bsize >> 10;              // in kbytes
        *tsize = (bsize * s.f_blocks) ;           // in kbytes
        *fsize = (bsize * s.f_bfree) ;             // in kbytes
        *asize = (bsize * s.f_bavail);             // in kbytes
    }
    else if(unit == B_TYPE)
    {
        bsize = s.f_bsize;                // in bytes
        *tsize = (bsize * s.f_blocks) ;      // in bytes
        *fsize = (bsize * s.f_bfree) ;          // in bytes
        *asize = (bsize * s.f_bavail);         // in bytes
    }
    return *asize;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章