3

我的问题如下:我需要获取设备的文件系统(在我的情况下是 pendrive)才能使用此信息。我的应用程序在 Linux 嵌入式系统中运行,我只想接受具有 FAT 和 FAT32 文件系统的笔式驱动器来执行文件导出。我搜索了互联网,但我没有找到我需要的系统调用。关于源代码,我的应用程序是用 C++ 编写的。

我已经使用了 struct statfs,但是经过测试,我发现当我使用 NTFS 和 FAT32 格式的 pendrive 时,字段 f_type 的值是相同的。测试的输出是值 0x1021994。

我知道可以发现文件系统,“fdisk -l”命令可以完成这项工作,但是我无法在 fdisk 代码中弄清楚如何。

4

4 回答 4

3

You can use the statfs system call which includes uint32_t f_type; /* type of filesystem */ in the returned struct statfs


Note that, as JoshuaRLi points out, statfs is now deprecated in favor of statvfs — and struct statvfs does not include an f_type field.

于 2012-09-18T20:07:56.700 回答
0

The easiest way is:

1) Run the "mount" command to list one or more filesystems

2) Parse out the information you need

3) You can invoke "mount" from the "popen()" API

PS:

There's also a "mount()" API, which could eliminate steps 2) and 3), if you prefer.

Linux being Linux, there's also probably at least half a dozen other viable alternatives - your choice :)

于 2012-09-18T20:05:10.883 回答
0

Maybe you could parse /proc/mounts file?

于 2012-09-18T20:06:55.097 回答
0

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

于 2012-09-18T22:15:27.310 回答