首页 > 解决方案 > 在 C/C++ 中在运行时确定文件系统

问题描述

如何确定我的代码正在读取或写入的文件是否在运行时从 C/C++ 代码中安装在 Lustre、GPFS 或 NFS 之上的路径上?

编辑:工作代码:

#include <sys/vfs.h>
#include <iostream>

int main(int argc, char** argv) {
  struct statfs sf;
  statfs(argv[0], &sf);

  std::cout << "f_type =" <<  std::hex << sf.f_type << "\n";
}

对半 C,半 C+​​+ 感到抱歉。

标签: filesystemsnfslustre

解决方案


您可以使用statfs()系统调用并查看该f_type字段。对于 Lustre,LL_SUPER_MAGIC是 0x0BD00BD0(基于对象的磁盘)。在手册页中NFS_SUPER_MAGIC列为statfs(2)0x6969,没有评论它可能代表什么。:-)


推荐阅读