日期:2014-05-16  浏览次数:20862 次

关于获取类似/dev/hda1设备的文件系统的类型
请问有现成的linux C函数可以用
不想自己去读分区表
也不想调用fdisk命令

------解决方案--------------------
应该没有
------解决方案--------------------
cat /proc/mounts
------解决方案--------------------
getmntent()调用,返回一个struct mntent结构。下面是一个代码例子

#include <stdio.h>
#include <mntent.h>

int main(int argc, char *argv[])
{
FILE *fp = NULL;
struct mntent *mnt = NULL;

fp = setmntent("/etc/mtab", "r");
if (fp == NULL) {
return -1;
}

while ((mnt = getmntent(fp))) {
printf("name: %s, type: %s, mount dir: %s, opts: %s\n",
mnt->mnt_fsname, mnt->mnt_type, mnt->mnt_dir, mnt->mnt_opts);
}
endmntent(fp);

return 0;
}

------解决方案--------------------
mount里面好像就是一个一个试的
------解决方案--------------------
你od -c /dev/hda1看一下设备的头100-200个字节
fat32类型的类型标志在第82-86这5个字节里.
ntfs 的类型标志在第3,4,5,6这4个字节里.
其它类型的没找到在那,仔细找下看看能否找到.