Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Linux中使用C/C++;如何确定已装入或未装入分区的文件系统类型_C++_Linux_Mount - Fatal编程技术网

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