
Linux能够读取U盘或移动硬盘的序列号,并获取其分区信息。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
Linux系统能够读取U盘或移动硬盘的序列号,并同时获取其分区信息。其运作的基本原理如下:当外部USB设备插入时,会产生`/proc/scsi/usb-storage`目录,并在其中生成一系列数字文件(例如1、2、3、4),这些文件包含了设备的相关数据。与此同时,`/sys/class/scsi_device/`目录下会呈现多个SCSI设备的目录,通常IDE硬盘默认不包含子目录,而SATA硬盘则默认包含子目录,这些子目录以数字开头(例如1:0:0:0 2:0:0:0),并且与`/proc/scsi/usb-storage`目录中的数字对应。SATA硬盘的子目录表明了其具体位置。例如,在`/sys/class/scsi_device/2:0:0:0/device/block`目录下可以找到连接了USB设备的条目,从中可以获得U盘或移动硬盘的分区名称,如sda1。该演示程序实现了上述流程:首先检查`/proc/scsi/usb-storage`目录,确认是否有U盘或移动硬盘已连接;如果存在,则读取U盘或移动硬盘的序列号;然后,在`/sys/class/scsi_device/`目录下进行逐级查找,直至定位到U盘或移动硬盘的分区。该代码可直接编译和测试运行,并且适用于嵌入式环境。在Linux环境下进行测试时,`id`表示序列号, `sdb1`表示分区名称:示例输出显示了通过查阅相关路径获取到的信息:# ./a.out udisk dev num:0 udisk id:055CE21B ret:0 dev num:0 found dir:0:0:0:1 found dev dir:0:0:0:1,full path:/sys/class/scsi_device/0:0:0:1 sub function found dir:sda found sd device dir:sda,full path:/sys/class/scsi_device/0:0:0:1/device/block/sda found dir : 6 : 6 : 6 : 7 found dev dir : 6 : 6 : 6 : 7 , full path:/sys class / scsi device / 6 : 6 : 6 : 7 sub function found dir sdb found sd device dir sdb , full path / sys class / scsi device / 6 ; 6 ; ; ; ; ; ; ; ; ; sub function open directory / sys class / scsi device / 6 ; ; ; ; ; ; error no such file or directory get name return , disk name sdb1 # 需要注意的是,某些USB设备可能集成多个功能(例如CD和U盘),从而导致出现多个子目录进行查找的情况。
全部评论 (0)


