在我的 C/C++ 程序中,我想检查用户指定的数据目录是否驻留在 NFS 文件系统上。需要进行检查,因为远程 NFS 目录的数据处理延迟/带宽更差。如果数据目录是 NFS,我想向用户发出警告。
我怎样才能做到这一点?我认为有 stat() 调用应该能够帮助我,但细节尚不清楚。
我在 Linux 上。
您应该使用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 关于这样做的有用性。
您可以使用statfs系统调用来获取有关给定路径的文件系统的信息(该文件系统内的某些文件)。
我不确定警告用户是否有用。内核正在做一些文件缓存,并且一些远程文件系统可能比一些本地文件系统更快(例如在慢速 USB 记忆棒上或在 CDROM 上)。
您要查找的系统调用是statfs
. 给定任何路径,它将为您提供有关该路径所在文件系统的信息,包括它正在使用的文件系统。