【发布时间】:2012-03-18 13:15:51
【问题描述】:
各位,我需要获取Linux系统上C语言连接的硬盘列表:
例如,在连接了 2 个 IDE 磁盘和 1 个 SATA 磁盘的计算机上运行程序。
./a.out
需要输出:
/dev/hda
/dev/hdb
/dev/sda
帮助?
【问题讨论】:
标签: c linux hard-drive
各位,我需要获取Linux系统上C语言连接的硬盘列表:
例如,在连接了 2 个 IDE 磁盘和 1 个 SATA 磁盘的计算机上运行程序。
./a.out
需要输出:
/dev/hda
/dev/hdb
/dev/sda
帮助?
【问题讨论】:
标签: c linux hard-drive
使用libsysfs,这是向内核查询各种附加设备的推荐方式。
【讨论】:
FILE *fp = popen("fdisk -l | grep \"Disk /\" | awk '{print $2};' | sed 's/://'", "r");
while(fgets(path, sizeof(path) -1,fp) != NULL)
//your code
pclose(fp);
【讨论】:
sudoers list 中,则在fdisk 之前使用sudo。
最简单的方法是读取并解析/proc/partitions。
【讨论】:
也许你可以参考fdisk的源代码。 关注本网站: ftp://ftp.gnu.org/gnu/fdisk
【讨论】:
命令行
"ls /sys/block/"
将返回输出为:
sda sdb sdc
从那里,您可以创建一个脚本,将其通过管道传输到文件,然后将该文件作为数组或链表读入,以按照您认为合适的方式操作数据(例如在前面添加 /dev/列表中的所有设备名称)。
【讨论】: