磁盘空间? (已用/免费/总计)我如何获得这个?在 C++ 中

问题描述 投票:0回答:4

磁盘空间? (已用/免费/总计)我如何获得这个?在 C++ 中... 感谢您的阅读。

c++
4个回答
13
投票
#include <sys/statvfs.h>
#include <iostream>
#include <cstring>
using namespace std;

int main( int argc, char *argv[] )
{
    struct statvfs fiData;

    if( argc < 2 ) {
            cout <<"Usage, ./size dir1 dir2 ... dirN\n";
            return(1);
    }

    //Lets loopyloop through the argvs
    for( int  i= 1 ; i<argc; i++ ) {
            if((statvfs(argv[i],&fiData)) < 0 ) {
                    cout << "\nFailed to stat:"  << argv[i];
            } else {
                    cout << "\nDisk: " <<  argv[i];
                    cout << "\nBlock size: "<< fiData.f_bsize;
                    cout << "\nTotal no blocks: "<< fiData.f_blocks;
                    cout << "\nFree blocks: "<< fiData.f_bfree;
            }
    }
}

编译: g++ -o size file.cpp

测试: ./size dir1 dir2


10
投票

GetDiskFreeSpaceEx win32 API


6
投票

statvfs 适用于 Linux。


3
投票

最初的 Linux

statfs()
fstatfs()
系统调用在设计时并未考虑到极大的文件大小。

随后,

Linux 2.6
添加了新的
statfs64()
fstatfs64()
系统调用,它们采用了新结构
statfs64

新结构包含与原始

statfs
结构相同的字段,但各个字段的大小有所增加,以适应大文件大小。

参见 http://linux.die.net/man/2/statfs64

© www.soinside.com 2019 - 2024. All rights reserved.