【问题标题】:How to check in C code whether a directory is on NFS file system?如何在 C 代码中检查目录是否在 NFS 文件系统上?
【发布时间】:2012-07-28 08:22:47
【问题描述】:

在我的 C/C++ 程序中,我想检查用户指定的数据目录是否驻留在 NFS 文件系统上。需要进行检查,因为远程 NFS 目录的数据处理延迟/带宽更差。如果数据目录是 NFS,我想向用户发出警告。

我该怎么做?我认为有 stat() 调用应该能够帮助我,但细节尚不清楚。

我在 Linux 上。

【问题讨论】:

  • 实际性能可能会被操作系统通过缓存很好地隐藏,因此您必须执行广泛测试以确定实际 性能...

标签: linux nfs stat


【解决方案1】:

您应该使用statfs(2) 并检查f_type

#include <sys/statfs.h>

struct statfs foo;
if (statfs ("/foo/bar", &foo)) {
    /* error handling */
}

if (foo.f_type == NFS_SUPER_MAGIC) {
    /* nfs warning */
}

我同意 Basile 的观点。

【讨论】:

    【解决方案2】:

    您可以使用statfs 系统调用来获取有关给定路径的文件系统的信息(该文件系统中的某个文件)。

    我不确定警告用户是否有用。内核正在做一些文件缓存,一些远程文件系统可能比一些本地文件系统更快(例如,在慢速 USB 记忆棒上或在 CDROM 上)。

    【讨论】:

      【解决方案3】:

      您要查找的系统调用是statfs。给定任何路径,它将为您提供有关该路径所在文件系统的信息,包括它正在使用的文件系统。

      【讨论】:

        猜你喜欢
        • 2018-05-13
        • 2013-01-08
        • 1970-01-01
        • 2014-10-09
        • 1970-01-01
        • 2014-02-18
        • 2011-04-19
        • 1970-01-01
        • 2011-09-07
        相关资源
        最近更新 更多