[英]Get size of block device Linux/Windows
我有一個任務來獲取塊設備的大小,它必須是跨平台應用程序(Linux / Windows),所以我使用Qt,能否使用Qt標准類(例如QFile和QFileInfo)來獲取塊設備的文件大小? 我的素描程序無法正常工作:
#include <QtCore/QCoreApplication>
#include <iostream>
#include <QFileInfo>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFileInfo info("/dev/sda5");
if(info.isReadable())
std::cout<<"/dev/sda1 isReadable\n";
else
std::cout<<"Cant read /dev/sda5";
std::cout<<info.size()<<"\n";
return a.exec();
}
它顯示“ / dev / sda5 isReadable”並且大小等於零,您能幫我解決這個問題嗎?
您必須在Linux上使用statfs
,在Windows上使用GetDiskFreeSpaceEx
。 Qt似乎沒有包裝該函數,但這只是一小段代碼。
設備節點通過常規stat調用報告大小為零。 這是事實,您對此無能為力。 無論如何,這並不有趣,因為要找出在某個路徑上安裝了哪個設備是很多特定於Unix的工作。
在Linux方面,有兩個實用程序將幫助枚舉附加的存儲分區,具體取決於您的發行版: blkid和vol_id 。 我已經使用它們來識別Samba服務器設置腳本的可能分區(及其類型)。 可以將其輸出重定向到文本文件,然后將結果解析為C代碼。 HTH。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.