在我的C / C ++程序中,我想检查用户指定的数据目录是否驻留在NFS文件系统上。需要进行检查,因为远程NFS目录的数据处理延迟/带宽更差。如果数据目录是NFS,我想向用户发出警告。
我该怎么做?我认为有stat()调用应该可以帮助我,但细节不明确。
我在Linux上。
答案 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
。给定任何路径,它将为您提供有关路径存在的文件系统的信息,包括它正在使用的文件系统。