5

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

我怎样才能做到这一点?我认为有 stat() 调用应该能够帮助我,但细节尚不清楚。

我在 Linux 上。

4

3 回答 3

7

您应该使用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 关于这样做的有用性。

于 2012-07-28T08:35:58.677 回答
4

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

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

于 2012-07-28T08:34:02.833 回答
3

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

于 2012-07-28T08:33:23.410 回答