You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux Mint上使用Libparted列出所有连接的存储设备?

解决libparted遍历存储设备的问题

你的代码问题在于每次调用 ped_device_get_next(NULL) 都会从头返回第一个设备,导致无限重复输出同一SSD型号。根据libparted的文档说明:

ped_device_get_next() 返回全局设备列表中的下一个设备。如果 dev 为 NULL,则返回第一个设备。

要正确遍历所有设备,需将上一次获取的设备作为参数传入 ped_device_get_next(),以此依次获取下一个设备。修改后的代码如下:

#include <cmakeconfig.h>
#include "mainheader.h"
#include <iostream>  // 确保包含iostream以使用std::cout

int main()
{
    ped_device_probe_all();

    PedDevice *tempbed = NULL;
    int c = 0;
    // 循环获取下一个设备,直到返回NULL(无更多设备)
    while ((tempbed = ped_device_get_next(tempbed)) != NULL && c < 256) {
        std::cout << c << " " << tempbed->model << "\n";
        c++;
    } 

    return 0;
}

关键修改说明:

  • 初始化 tempbed 为 NULL,第一次调用 ped_device_get_next(NULL) 会返回列表中的第一个设备
  • 后续每次调用传入当前的 tempbed,让函数返回列表中的下一个设备
  • 循环终止条件改为当函数返回 NULL(无更多设备)或达到安全计数上限,同时避免了原代码中可能出现的空指针访问崩溃

这样就能正确遍历所有被探测到的存储设备,包括你的HDD。

内容的提问来源于stack exchange,提问作者Hubert Gonera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 09:07:19