获取物理硬盘&x27;c语言中的s列表

获取物理硬盘&x27;c语言中的s列表,c,linux,hard-drive,C,Linux,Hard Drive,各位,我需要得到Linux系统上用C语言连接的硬盘列表: 例如,在连接了2个IDE磁盘和1个SATA磁盘的计算机上运行程序 ./a.out 不需要: /dev/hda /dev/hdb /dev/sda 帮助?使用,这是一种建议的方法,可以查询内核中所有类型的连接设备。最简单的方法是简单地读取和解析/proc/partitions也许您可以参考fdisk的源代码。 请浏览本网站: 命令行 “ls/sys/block/” 将以以下形式返回输出: sda sdb sdc 从那里,您可以创建一个脚

各位,我需要得到Linux系统上用C语言连接的硬盘列表:

例如,在连接了2个IDE磁盘和1个SATA磁盘的计算机上运行程序

./a.out
不需要:

/dev/hda
/dev/hdb
/dev/sda

帮助?

使用,这是一种建议的方法,可以查询内核中所有类型的连接设备。

最简单的方法是简单地读取和解析
/proc/partitions

也许您可以参考fdisk的源代码。 请浏览本网站:
命令行
“ls/sys/block/”

将以以下形式返回输出:

sda sdb sdc


从那里,您可以创建一个脚本,将其传输到一个文件,然后以数组或链表的形式读入该文件,以按照您认为合适的方式操作数据(例如在列表中的所有设备名称前面添加/dev/)。

这可能是我不想做的事情:DI将检查它。。但是我发现了'ls/sys/block/',我认为这是一个很好的解决方案。我需要更标准的方法。感谢这需要我的根system@natinusala,如果用户在
sudoers列表中,请在
fdisk
之前使用
sudo
。只是要指出这一点,如果您希望代码可移植,则不应依赖需要root权限的代码
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);