各位先进好
小弟最近有个工作
需要用C语言去找到linux下,硬盘的/dev/ 的sd 之编号
小弟对linux很陌生
我们的环境下,主机上只可能插有 两个usb碟 和 一个硬盘
所以ls /dev/sd*
之后
可能长成
/dev/sda /dev/sda1 /dev/sdb /dev/sdb1
这个样子
这时候我插了一个硬盘和一个usb
且sda是硬盘,sdb是usb
我的工作就是利用C语言去找出 sda 这个字串
当然硬盘不可能永远都是sda,如果先插usb再插硬盘
硬盘就可能变成sdb或sdc等等
我目前是先用C语言读取 /proc/partitions 这个档案
可以找到类似这样的资讯
major minor #blocks name
8 0 488386584 sda
8 16 15646720 sdb
8 17 15646688 sdb1
然后判断 sda的 blocks 比sdb的 blocks 还要大,所以回传sda字串
但是我想说这个方法感觉很怪异
如果哪一天插了一个小容量的硬盘和一个大容量的usb
就马上会回传错误的sdx了
所以想请问版上前辈,有没有什么linux的command或者哪一个linux的档案
有在纪录著 usb 和 hd 挂载在 /dev/sdx 哪里 的相关资讯呢?
跨档案分析也可以喔~
先谢谢大家^^