linux 获取磁盘的文件系统类型

lbiboy 2015-02-07 04:29:29
如题,我在程序中有一个mount的调用,但那个磁盘的文件系统类型是未知的,而mount系统调用却一定要一个filesystemtype 参数,请问通过什么方法获取此磁盘的文件系统类型,或者是如何给mount函数传递参数?
...全文
806 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghost+ 2017-07-25
  • 打赏
  • 举报
回复
方法1:挂载时,将常用的文件系统都试一遍(如fat16,fat32,ntfs,ext2/3/4等) 方法2:open 分区(如/dev/sda1),read文件前512字节后,再其中根据自己的分区情况读 相应分区的硬盘分区表信息,硬盘分区表信息的第4个字节就是文件系统类型。 假设:你要挂载的分区为第一个分区并且为主分区,一般应该是/dev/sda1 文件的 (第446 + 4个字节就是文件系统类型).
lbiboy 2015-03-26
  • 打赏
  • 举报
回复
所以,该怎么样才能正确求得呢???
lbiboy 2015-03-26
  • 打赏
  • 举报
回复
引用 9 楼 gaofei_1994 的回复:
int stat(const char *path, struct stat *buf); int fstat(int fd, struct stat *buf); int lstat(const char *path, struct stat *buf); 这几个函数应该能让你找到需要的
以上几个函数只有在已经挂载的情况下才能得到所要的文件系统类型。比如statfs这个函数,在未挂载前,用/dev/sdb1这样的路径做为参数,得到的结果是 TMPFS_MAGIC,而我实际的磁盘是ext4的
gaofei_1994 2015-02-12
  • 打赏
  • 举报
回复
int stat(const char *path, struct stat *buf); int fstat(int fd, struct stat *buf); int lstat(const char *path, struct stat *buf); 这几个函数应该能让你找到需要的
lbiboy 2015-02-09
  • 打赏
  • 举报
回复
看了下blkid的源代码,发现有点难看懂,是在一个工具包里,牵扯太多了。 有没有高手可以指点一下是怎么获取的?
lbiboy 2015-02-09
  • 打赏
  • 举报
回复
坐等高手出现!!
iasky 2015-02-08
  • 打赏
  • 举报
回复
C可以调用shell命令吧,system或者exec类函数 或者你区看看file或者blkid的源码
lbiboy 2015-02-08
  • 打赏
  • 举报
回复
各位,我要的不是shell命令哦,我是编写应用程序。我要的是函数调用
引用 1 楼 lbiboy 的回复:
等待解惑!!
引用 3 楼 iasky 的回复:
blkid 也行
iasky 2015-02-08
  • 打赏
  • 举报
回复
blkid 也行
iasky 2015-02-08
  • 打赏
  • 举报
回复
parted /dev/sdX -l 或者 file -sL /dev/sdXY
lbiboy 2015-02-07
  • 打赏
  • 举报
回复
等待解惑!!

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧