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

Linux系统调用以发现设备的文件系统,linux,filesystems,system,Linux,Filesystems,System,我的问题如下:我需要获取设备的文件系统(在我的例子中是pendrive)来使用这些信息。我的应用程序运行在Linux嵌入式系统中,我只希望接受带有FAT和FAT32文件系统的pendrives来执行文件导出。我搜索了互联网,但没有找到我需要的系统调用。 关于源代码,我的应用程序是用C++编写的。 我已经使用了struct statfs,但是在一次测试之后,我发现当我使用NTFS和FAT32格式的pendrive时,字段f_type的值是相同的。测试的输出值为0x1021994 我知道可以通过“f

我的问题如下:我需要获取设备的文件系统(在我的例子中是pendrive)来使用这些信息。我的应用程序运行在Linux嵌入式系统中,我只希望接受带有FAT和FAT32文件系统的pendrives来执行文件导出。我搜索了互联网,但没有找到我需要的系统调用。 关于源代码,我的应用程序是用C++编写的。 我已经使用了struct statfs,但是在一次测试之后,我发现当我使用NTFS和FAT32格式的pendrive时,字段f_type的值是相同的。测试的输出值为0x1021994

我知道可以通过“fdisk-l”命令来发现文件系统,但是我无法在fdisk代码中找到方法。

最简单的方法是:

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

2) 解析出你需要的信息

3) 您可以从API调用“mount”

附言:

还有一个API,如果您愿意,它可以消除步骤2)和3)


Linux作为Linux,可能还有至少六种其他可行的替代方案-您的选择:)

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

您可以使用
statfs
,其中包括
uint32\t f\u类型;/*返回的结构statfs中的文件系统类型*/



注意正如所指出的,
statfs
现在被弃用,取而代之的是
statvfs
struct statvfs
不包含
f_type
字段。

在装载时指定文件系统类型(不要使用默认的
-t auto
)。如果需要支持多个类型,请考虑尝试它们。

挂载命令只列出已安装的设备。在我的情况下,我需要在安装设备之前检查文件系统。我完全不确定您拒绝使用U盘上的非VFAT文件系统是否正确。我发现使用Ext3(或Ext4)文件系统格式化U盘非常有用。请注意,
statfs
支持
statvfs