如何检查C代码目录是否在NFS文件系统上?

时间:2012-07-28 08:22:48

标签: linux nfs stat

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

我该怎么做?我认为有stat()调用应该可以帮助我,但细节不明确。

我在Linux上。

3 个答案:

答案 0 :(得分: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关于这样做的有用性。

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

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