我一直在尝试使用using ()来获取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.
它似乎并不总是把它还回去。因为我可以把它用在文件上。我以前也在硬盘上工作过。
发布于 2013-12-05 05:56:15
你会得到这样的结果,因为这不是获得磁盘大小的正确方法。
如果您想检查磁盘的大小,应该在磁盘fd上发出一个ioctl(),请求为BLKGETSIZE64 (以及指针指向long long的参数)。
long long disk_size;
ioctl(<disk_fd>, BLKGETSIZE64, &disk_size);如果您对文件系统的大小(可能不同)或文件系统上的空空间很感兴趣,那么使用statvfs()调用。
https://stackoverflow.com/questions/20392227
复制相似问题