繁体   English   中英

磁盘空间? (二手/免费/总计)我怎么得到这个?在C ++中

[英]Disk Space? (used/free/total) how do I get this? in C++

磁盘空间? (二手/免费/总计)我怎么得到这个? 在C ++中...感谢您的阅读。

GetDiskFreeSpaceEx win32 API

#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

适用于linux的statvfs

最初的Linux statfs()和fstatfs()系统调用的设计并未考虑到极大的文件大小。 随后,Linux 2.6添加了使用新结构statfs64的新statfs64()和fstatfs64()系统调用。 新结构包含与原始statfs结构相同的字段,但增加了各种字段的大小,以适应大文件大小。 http://linux.die.net/man/2/statfs64

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM