簡體   English   中英

獲取塊設備Linux / Windows的大小

[英]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方面,有兩個實用程序將幫助枚舉附加的存儲分區,具體取決於您的發行版: blkidvol_id 我已經使用它們來識別Samba服務器設置腳本的可能分區(及其類型)。 可以將其輸出重定向到文本文件,然后將結果解析為C代碼。 HTH。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM