免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7553 | 回复: 9
打印 上一主题 下一主题

[内核入门] 求助:Linux下区分硬盘和U盘的区分 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-17 08:44 |只看该作者 |倒序浏览
请问,
在Linux下如何识别硬盘和U盘?
我想编写一段代码,在板子上向硬盘中存储数据,然后向U盘中备份。
可是在区分这两种设备时不知道该怎么做了,大家有什么好的办法吗?
谢谢!在线等

论坛徽章:
0
2 [报告]
发表于 2008-12-17 09:21 |只看该作者
1.大小是不是一样?
2.用fdisk -l 还可以通过名字去区分。

论坛徽章:
0
3 [报告]
发表于 2008-12-17 09:59 |只看该作者
原帖由 nhuczp 于 2008-12-17 09:21 发表
1.大小是不是一样?
2.用fdisk -l 还可以通过名字去区分。


没办法区分..
如果当前板子上没挂任何存储设备,首先挂上的设备显示的名字都是sda,
通过名字来区分的办法好像行不通。
SATA口的硬盘和USB接口的存储设备之间有哪些办法可以区分呢?

论坛徽章:
0
4 [报告]
发表于 2008-12-17 10:22 |只看该作者
原帖由 zhangxiwl 于 2008-12-17 09:59 发表


没办法区分..
如果当前板子上没挂任何存储设备,首先挂上的设备显示的名字都是sda,
通过名字来区分的办法好像行不通。
SATA口的硬盘和USB接口的存储设备之间有哪些办法可以区分呢?


/sys/block/里大概有你想要的东西。

论坛徽章:
0
5 [报告]
发表于 2008-12-17 11:14 |只看该作者
原帖由 zhangxiwl 于 2008-12-17 09:59 发表


没办法区分..
如果当前板子上没挂任何存储设备,首先挂上的设备显示的名字都是sda,
通过名字来区分的办法好像行不通。
SATA口的硬盘和USB接口的存储设备之间有哪些办法可以区分呢?

确实是这样,

但是,板子的检测顺序似乎通常不会先检测USB口

因此,基于这个假设,可以尝试认为U盘不会是sda

论坛徽章:
0
6 [报告]
发表于 2008-12-17 11:48 |只看该作者
原帖由 net_robber 于 2008-12-17 11:14 发表

确实是这样,

但是,板子的检测顺序似乎通常不会先检测USB口

因此,基于这个假设,可以尝试认为U盘不会是sda



如果用这种方法的话,当板子上电之后,如果插着U盘,没有插硬盘(都支持热插拔),
会把U盘误认为是硬盘,因而识别不出U盘..
不知道有没有相关的能够专门识别USB设备或SCSI设备的系统调用?
如果大家知道的话请告诉我,我去看源码...

论坛徽章:
0
7 [报告]
发表于 2008-12-17 14:11 |只看该作者
查看/sys/block/sda/device这个链接,例如:
/sys/block/sda/device -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0

一般,链接包含host字样的,是硬盘,包含usb字样的,是U盘,不过好像不是所有的硬件都可以这样识别,

可能还需要读/sys/block/sda/removable,如果读出的是0,表示是硬盘,是1表示是可移动设备。

论坛徽章:
0
8 [报告]
发表于 2008-12-18 11:09 |只看该作者
这个办法并不可行..因为在板子上USB设备是被视为SCSI类的,
通过读文件来区分起来效率很低。
我现在已经找到头绪了。在看UDEV源码。谢谢各位朋友!

论坛徽章:
0
9 [报告]
发表于 2008-12-19 11:03 |只看该作者
原帖由 zhangxiwl 于 2008-12-18 11:09 发表
这个办法并不可行..因为在板子上USB设备是被视为SCSI类的,
通过读文件来区分起来效率很低。
我现在已经找到头绪了。在看UDEV源码。谢谢各位朋友!


你可以读/proc/scsi/scsi和/proc/scsi/usb-storage,两厢比较就能得出了。

论坛徽章:
0
10 [报告]
发表于 2014-02-12 11:22 |只看该作者
楼主找到方法了吗?我也正在找解决办法呢,我现在要区分硬盘,U盘,SD卡,没找到一个通用的方法.
楼主给大家分享一下吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP