linux获取U盘可用空间大小,U盘大小

您所在的位置:网站首页 u盘内存容量 linux获取U盘可用空间大小,U盘大小

linux获取U盘可用空间大小,U盘大小

2024-07-06 14:03| 来源: 网络整理| 查看: 265

当U盘挂载成功后,知道了U盘的挂载路径,比如/sda/sda1挂载到路径/mnt/abc下,那么如果想知道sda1的可用空间和总大小,可以传/mnt/abc进statfs函数,然后计算而得。 #include /* 或者 */ int statfs(const char *path, struct statfs *buf); int fstatfs(int fd, struct statfs *buf); 参数:    path: 位于需要查询信息的文件系统的文件路径名(不是设备名,是挂载点名称)。      fd: 位于需要查询信息的文件系统的文件描述词。  buf:以下结构体的指针变量,用于储存文件系统相关的信息

struct statfs { long f_type; /* 文件系统类型 */ long f_bsize; /* 经过优化的传输块大小,单位B*/ long f_blocks; /* 文件系统数据块总数 */ long f_bfree; /* 可用块数 */ long f_bavail; /* 非超级用户可获取的块数 */ long f_files; /* 文件结点总数 */ long f_ffree; /* 可用文件结点数 */ fsid_t f_fsid; /* 文件系统标识 */ long f_namelen; /* 文件名的最大长度 */ };

#include #include #include #include int main() { struct statfs s; int total = 0; int free = 0; char chDir[255] = {0}; memset(&s, 0, sizeof(struct statfs)); if(NULL == getcwd(chDir,sizeof(chDir)-1)) { return -1; } printf("\n getcwd = %s \n",chDir ); if( 0 != statfs(chDir, &s) ) { return -1; } if(s.f_bsize >= 1024) { printf("\n if(s.f_bsize >= 1024)\n"); total = (int)( (s.f_bsize / 1024 ) * s.f_blocks ); free = (int) ( ( s.f_bsize / 1024 ) * s.f_bavail ); } else { printf("\n if(s.f_bsize >= 1024) else\n"); total = (int)( (s.f_blocks / 1024 ) * s.f_bsize ); free = (int) ( ( s.f_bavail / 1024 ) * s.f_bsize ); } printf("\n total [%d] KB free[%d] KB\n", total, free); return 0; }

python计算剩余空间

>>> 40045284/1024/1024 38 >>> 40045284.0/1024.0/1024.0 38.190158843994141

38.18G,

linux   df  路径 -h

的结果:

总得来说  39G和38G的结果还是有点区别的。可能跟程序里计算非root可用的空间有关。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3