我需要在linux中找到系统调用,以便在我的应用程序中发现连接的pendrive的文件系统。我发现'fdisk -l'完成了这项工作,但我现在需要了解这是如何发生的。我无法发现阅读fdisk代码,唯一可以认为是:
Obs:我的应用程序是用C ++编写的,并且在嵌入式Linux系统中运行。
答案 0 :(得分:2)
命令fdisk -l显示由系统ID 字节表示的文件系统。该字节位于主引导记录(MBR)内的分区表中。 MBR通常存储在第一个硬盘上的第一个气缸上(尽管任何硬盘都可以有MBR)。
我认为你可以简单地使用open和read系统调用来从磁盘读取MBR,假设运行程序的用户有权限:
char buf[446];
int fd = open("/dev/hda", O_RDONLY);
read(fd, buf, 446);
查看MBR Format,然后读出分区表以获取系统ID字节。这是系统ID字节的list of types。
我只知道Linux上的fdisk如何工作,上次我检查它不支持GPT或任何其他分区格式。所以这个答案只与经典的MBR格式有关。
答案 1 :(得分:1)
您可以使用libblkid中的util-linux来执行此操作。源代码分发包括一个列出指定设备上分区的示例,包括文件系统类型。