【发布时间】:2012-09-19 13:16:04
【问题描述】:
我需要在 linux 中找到一个系统调用,以发现我的应用程序中连接的 pendrive 的文件系统。我发现“fdisk -l”可以完成这项工作,但是我现在需要了解这是如何发生的。我无法发现阅读 fdisk 代码,唯一确定的是:
- 结构体 statfs 或 statvfs 未使用;
- fdisk 不需要挂载设备来查找文件系统;
Obs:我的应用程序是用 C++ 编写的,并且在嵌入式 linux 系统中运行。
【问题讨论】:
-
此链接中的答案解释了包含您要查找的信息的结构:superuser.com/questions/328974/…
-
请注意:您确实需要安装设备本身(我认为“安装”在您提到设备时是一个不正确的术语,但我在这里使用它就像您自己使用它一样)。您可能会问如何在不安装最终存储在设备上的文件系统的情况下执行此操作。
-
您可以通过
strace -fv fdisk -l来查看它正在使用的系统调用。 -
fdisk -l仅报告分配给分区的标签,正如@GermannArlington 提供的链接所指出的那样,该标签与分区上的实际文件系统完全不同并且不需要匹配。mount的手册页记录了mount如何尝试确定分区上实际存在的文件系统类型,但这并不简单。