filesystems - 在 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_MAGIC
列为statfs(2)
0x6969,没有评论它可能代表什么。:-)
推荐阅读
- android-studio - 如何从 Android Studio Gradle 建议中排除 SNAPSHOT 或其他依赖项
- javascript - 使用 Bootstrap 5.0.0 和 Webpacker 的动态模式
- flutter - 警报对话框中的文本不会立即更新
- python - 使用存储在 CSV 文件中的值更新 Python lxml etree subElement 属性
- powershell - 如何正确地将移动项目结果附加到 Powershell 中移动的每个项目的变量
- amazon-web-services - AWS:将 Amplify 连接到 Route 53 上的自定义域
- r - 如何在r中合并两个excel电子表格?
- python - 如何使用 Docker 的 ENV 变量为 Python 脚本避免 Windows 路径错误?
- javascript - Vuejs - 我如何将选择项绑定到组合框的输入
- c++ - MISRA C++ 2008 规则 7-3-1 和前向声明