使用fseek()获取大小的硬盘

约翰·史密斯

我一直在尝试使用fseek()获取linux系统上的硬盘大小。

我有一个应该返回正确大小的函数:

unsigned long long getsize(FILE *fp){
    unsigned long long prev=ftell(fp);
    fseek(fp,0,SEEK_END);
    unsigned long long size=ftell(fp);
    fseek(fp,prev,SEEK_SET);
    return size;
}

但是当我在硬盘上使用它时,它会返回18446744073709551615或2 ^ 64-1 ...

它似乎并不总是返回它。因为我可以在文件上很好地使用它。我也曾经在硬盘上工作过。

奥卡德

之所以会得到这种结果,是因为这不是获取磁盘大小的正确方法。

如果要检查磁盘的大小,则应在磁盘fd上发出ioctl()并请求BLKGETSIZE64(以及指向long long的指针的参数)。

long long disk_size;
ioctl(<disk_fd>, BLKGETSIZE64, &disk_size);

如果您对文件系统的大小(可能有所不同)或文件系统上的空白空间非常感兴趣,请使用statvfs()call。

本文收集自互联网,转载请注明来源。

如有侵权,请联系debugcn@gmail.com 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我应该使用fseek SEEK_END

来自分类Dev

使用golang获取图像大小

来自分类Dev

创建一个特定大小的空文件,并使用fseek将新数据写入特定位置

来自分类Dev

将fseek与stdout一起使用

来自分类Dev

如何使用javascript获取网页的长度/大小

来自分类Dev

如何使用fseek()在一行的开头

来自分类Dev

使用自动换行获取SWT标签的大小

来自分类Dev

Google云端硬盘使用什么技术来获取实时更新?

来自分类Dev

使用Google云端硬盘获取WebViewLinks

来自分类Dev

谷歌云端硬盘API多上传文件获取损坏,大小1KB

来自分类Dev

使用fread和fseek逐行读取

来自分类Dev

使用fseek打印任意记录

来自分类Dev

在没有root权限的情况下,使用命令行获取Linux中我的硬盘驱动器的总大小?

来自分类Dev

在没有df的情况下获取硬盘大小

来自分类Dev

如何更改硬盘扇区大小

来自分类Dev

硬盘使用

来自分类Dev

如何使用WMI获取特定硬盘的逻辑磁盘?

来自分类Dev

我将如何强迫Debian使用硬盘上的物理扇区大小?

来自分类Dev

调整虚拟硬盘的大小

来自分类Dev

使用NSFileManager获取文件大小

来自分类Dev

硬盘驱动器使用的MBR分区的最大大小是多少?

来自分类Dev

使用现在的挂载点调整了Virtual Mint 19 Linux硬盘的大小

来自分类Dev

在VMWare播放器中使用Gparted减少硬盘大小?

来自分类Dev

从新硬盘调整分区大小

来自分类Dev

使用LVM在硬盘中间调整扩展分区的大小

来自分类Dev

如何在不使用 fseek 或 stat 的情况下在 C 中获取文件大小?

来自分类Dev

使用 fseek 、 fread 和指针读取文件

来自分类Dev

我没有正确使用 fseek() 吗?

来自分类Dev

如何使用php获取主硬盘的序列号

Related 相关文章

热门标签

归档