C++ 在Linux中使用C/C++;如何确定已装入或未装入分区的文件系统类型
C++ 在Linux中使用C/C++;如何确定已装入或未装入分区的文件系统类型,c++,linux,mount,C++,Linux,Mount,#blkid/dev/sdX给出了分区的文件系统类型,无论是已装入的还是未装入的。我如何在C/C++中实现这一点,而不调用系统调用并解析输出?我如何通过编程来实现它?对于安装的分区,是否有< BLPHIDE DE/COD>包?< /P> < P>,C++程序可以顺序读取并解析 /PRO/自/挂载< /COD>伪文件,参见 对于未安装的分区,它们可以包含任何内容(包括根本不包含文件系统、交换数据或原始数据,例如某些数据库系统)。因此,这个问题甚至可能毫无意义。您可以使用popen一些文件-s命令
#blkid/dev/sdX
给出了分区的文件系统类型,无论是已装入的还是未装入的。我如何在C/C++中实现这一点,而不调用系统调用并解析输出?我如何通过编程来实现它?对于安装的分区,是否有< <代码> BLPHIDE DE/COD>包?< /P> < P>,C++程序可以顺序读取并解析<代码> /PRO/自/挂载< /COD>伪文件,参见
对于未安装的分区,它们可以包含任何内容(包括根本不包含文件系统、交换数据或原始数据,例如某些数据库系统)。因此,这个问题甚至可能毫无意义。您可以使用popen
一些文件-s
命令
您应该学习
/bin/mount
的源代码,因为它是免费软件(它对自动案例也有类似的功能)。您可能想使用(由命令使用)您始终可以使用blkid
库(对于ubuntu,它与安装libblkid dev一样简单)。至于真正的用法,请参见:(很抱歉从我自己的存储库中发布代码,但它正是在那里开发的功能)。不要忘记,您需要使用sudo运行应用程序才能完全访问磁盘。对于装入的分区,您可以这样做,而不是读取/proc/self/mounts(假设您知道分区装入的路径):
有关更多详细信息,请参阅
man statfs
显然,您可以添加所需的所有类型。它们由statfs手册页列出。
据说statfs已被弃用,因为我不知道还有另一个调用会返回文件系统类型。实际上,我想找到文件系统类型来装载分区,以便我可以在mount
function:)中指定它。您正在用auto
类型重新发明mount
命令。你为什么不能用那个命令?我不想用系统调用。我可以在mount
功能中指定auto
吗?不可以。但在/bin/mount
上使用系统(3)
功能就是这种情况;你可以研究它的源代码,比如/bin/mount
,看看它是如何实现的。n我还想使用ntfs-3g
。所以auto
并没有给我一个好的选择。
/ is ext4
/tmp is tmpfs
man statfs