Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ [Qt][Linux]列出驱动器或分区_C++_Linux_Qt_Qt5_Qdir - Fatal编程技术网

C++ [Qt][Linux]列出驱动器或分区

C++ [Qt][Linux]列出驱动器或分区,c++,linux,qt,qt5,qdir,C++,Linux,Qt,Qt5,Qdir,如何使用qt列出驱动器或已装入的分区? 我尝试使用: foreach( QFileInfo drive, QDir::drives() ) { qDebug() << "Drive: " << drive.absolutePath(); } foreach(QFileInfo驱动器,QDir::drives()) { qDebug()您需要使用特定于平台的代码。并且,请 返回此系统上根目录的列表 在Windows上,它返回包

如何使用qt列出驱动器或已装入的分区? 我尝试使用:

foreach( QFileInfo drive, QDir::drives() )
       {
         qDebug() << "Drive: " << drive.absolutePath();
       }
foreach(QFileInfo驱动器,QDir::drives()) {
qDebug()您需要使用特定于平台的代码。并且,请

返回此系统上根目录的列表

在Windows上,它返回包含“C:/”和“D:/”等的QFileInfo对象列表。在其他操作系统上,它返回仅包含一个根目录(即“/”)的列表。


您可以使用
/etc/mtab
文件获取装载点列表

QFile file("/etc/mtab");
if (file.open(QFile::ReadOnly)) {
  QStringList mountpoints;
  while(true) {
    QStringList parts = QString::fromLocal8Bit(file.readLine()).trimmed().split(" ");
    if (parts.count() > 1) {
      mountpoints << parts[1];
    } else {
      break;
    }
  }
  qDebug() << mountpoints;
}
QFile文件(“/etc/mtab”);
if(file.open(QFile::ReadOnly)){
QStringList山点;
while(true){
QStringList parts=QString::fromLocal8Bit(file.readLine()).trimmed().split(“”);
如果(parts.count()>1){
安装点Qt 5.4+
您可以使用
qt5.4+中的
QStorageInfo
类,如下所示:

foreach (const QStorageInfo &storage, QStorageInfo::mountedVolumes()) {
    if (storage.isValid() && storage.isReady()) {
        if (!storage.isReadOnly()) {
            // ...
        }
    }
}

我没有注意到这在Linux上被忽略。但我仍然找不到任何与root不同的分区/磁盘。请您告诉我应该在哪里查找。在Linux下,您可以使用
getmntent
和朋友打开
/etc/mtab
并分析其中的信息。谢谢,我希望如此mething没有访问文件的权限,但对我来说已经足够好了:)对普通用户程序使用
/etc/mtab
,而不是
/proc/mounts
/proc/mounts
按时间顺序列出所有挂载点,甚至那些被覆盖的挂载点——正如您所看到的,在您的情况下,
/
会被报告两次!这些信息只对sy有用stem程序。而且,如果装载点的名称中有空格,那么这将非常糟糕,因为它不能正确处理空格转换(琐事:你在
/etc/mtab
/proc/mounts
中得到了什么?回答:在中搜索“空格”)。正如我在回答中所说,你真的需要使用
getmnent