在C中检测文件系统

时间:2011-12-05 17:41:16

标签: c linux

有没有办法判断文件是在本地磁盘还是在C中的NFS?代码应该可以在各种Linux发行版中移植,不应该依赖于系统调用(例如stat -f)。

1 个答案:

答案 0 :(得分:8)

您想使用<sys/vfs.h>中的statfs

int statfs(const char *path, struct statfs *buf);

struct statfs {
    __SWORD_TYPE f_type;    /* type of file system (see below) */

以下是如何使用它:

struct statfs s;
if (statfs("/etc", &s))
    perror("statfs");

switch (s->f_type) {
case EXT2_SUPER_MAGIC:
    break;
case EXT3_SUPER_MAGIC:
    break;
default:
    break;
}

此外:

  • 您混淆了“外部命令”和“系统调用”。它们是非常不同的东西
  • stat(1)命令在Linux发行版之间非常可移植。