Linux系统调用来发现设备的文件系统

我的问题是以下几点:我需要得到一个设备的文件系统(在我的情况下pendrive)使用这些信息。 我的应用程序正在Linuxembedded式系统中运行,我只想接受FAT和FAT32文件系统的文件来执行文件导出。 我search了互联网,但我没有find我需要的系统调用。 关于源代码,我的应用程序正在用C ++编写。

我已经使用了struct statfs,但是在testing之后,我发现字段f_type的值与使用NTFS和FAT32格式的pendrive相同。 testing的输出是值0x1021994。

我知道有可能发现文件系统,“fdisk -l”命令做的工作,但我不知道在fdisk代码如何。

您可以使用包含uint32_t f_type; /* type of filesystem */statfs 系统调用 uint32_t f_type; /* type of filesystem */ uint32_t f_type; /* type of filesystem */在返回的struct statfs

最简单的方法是:

1)运行“mount”命令列出一个或多个文件系统

2)解析出你需要的信息

3)你可以从“popen()” API调用“mount”

PS:

还有一个“mount()” API,如果你愿意,它可以消除步骤2)和3)。

Linux是Linux,也可能有至少六种其他可行的选择 – 你的选择:)

也许你可以解析/proc/mounts文件?

挂载时指定文件系统类型(不要使用默认的-t auto )。 如果您需要支持多种类型,请考虑全部尝试。