当前位置: 技术问答>linux和unix
如何动态挂载移动硬盘
来源: 互联网 发布时间:2016-04-23
本文导语: 最近本人在做PVR产品的开发工作,涉及使用移动硬盘的问题。我们使用移动硬盘作为刻录节目的存储空间,首先我们需要挂在上去,目前用户移动硬盘的文件系统可能有FAT32NTFS等,还有一种情况就是用户的移动硬盘可...
最近本人在做PVR产品的开发工作,涉及使用移动硬盘的问题。我们使用移动硬盘作为刻录节目的存储空间,首先我们需要挂在上去,目前用户移动硬盘的文件系统可能有FAT32NTFS等,还有一种情况就是用户的移动硬盘可能有好几个分区,也不知道分区的格式,假设我们通过多次尝试知道分区2为fat文件格式,通过$mount -t -vfat /dev/sda2 /mnt/smit 来挂载文件了,卸载只是需要$umount /mnt/smit就可以了。
但是,我们不可能预知哪个分区是哪个文件系统,并且知道有几个分区,虽然说可以用fdisk -l可以查看,但是在开发嵌入式产品中,系统资源受限,有没有一个好点的办法,动态获取系统的信息通过程序再分析确定你的移动硬盘有几个分区,且各为什么文件系统格式,再正确挂载呢?
但是,我们不可能预知哪个分区是哪个文件系统,并且知道有几个分区,虽然说可以用fdisk -l可以查看,但是在开发嵌入式产品中,系统资源受限,有没有一个好点的办法,动态获取系统的信息通过程序再分析确定你的移动硬盘有几个分区,且各为什么文件系统格式,再正确挂载呢?
|
没这么麻烦
一般Linux各个版本中是用udev来实现自动挂载的
内核发现有新的USB设备接入时 会发出一个event 里面包含了这个设备是什么类型 比如鼠标 键盘 移动硬盘等等
如果是移动硬盘 它会里面也会包含移动硬盘信息 多少个分区 每个分区的信息等等 具体请参考udev代码
因为udev还创建节点 加载驱动等动作 比较复杂 你可以运行udev-monitor再插入移动硬盘看看输出 其实非常简单的
一般Linux各个版本中是用udev来实现自动挂载的
内核发现有新的USB设备接入时 会发出一个event 里面包含了这个设备是什么类型 比如鼠标 键盘 移动硬盘等等
如果是移动硬盘 它会里面也会包含移动硬盘信息 多少个分区 每个分区的信息等等 具体请参考udev代码
因为udev还创建节点 加载驱动等动作 比较复杂 你可以运行udev-monitor再插入移动硬盘看看输出 其实非常简单的
|
要想直接调用一个函数估计是没有的,不过你可以参考fdisk和blkid的源代码,然后集成到你的程序中!
fdisk所在的源码包:util-linux; blkid所在的源码包:e2fsprogs;
good luck!
fdisk所在的源码包:util-linux; blkid所在的源码包:e2fsprogs;
good luck!
|
fdisk -l 查看有几个分区
blkid 获得每个分区的文件系统信息
blkid 获得每个分区的文件系统信息