在 C/C++ 中在运行时确定文件系统

Determine Filesystem at runtime in 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++ 感到抱歉。

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