在C中检测文件系统

Dan*_*dox 4 c linux

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

cni*_*tar 8

你想用statfs<sys/vfs.h>.

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

struct statfs {
    __SWORD_TYPE f_type;    /* type of file system (see below) */
Run Code Online (Sandbox Code Playgroud)

以下是如何使用它:

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;
}
Run Code Online (Sandbox Code Playgroud)

也:

  • 你混淆了"外部命令"和"系统调用".它们是非常不同的东西
  • stat(1)命令在Linux发行版中非常便携.