1
这可能是一个愚蠢的问题,但假设我有一个文件路径,我想知道它是否指向tmpfs上的文件(即它是内存文件)。我怎样才能使用Linux系统调用? (也就是说,我不能去壳)如何判断一个文件是否在Linux上给定其路径的tmpfs?
这可能是一个愚蠢的问题,但假设我有一个文件路径,我想知道它是否指向tmpfs上的文件(即它是内存文件)。我怎样才能使用Linux系统调用? (也就是说,我不能去壳)如何判断一个文件是否在Linux上给定其路径的tmpfs?
使用系统调用statfs
并查看返回的f_type
字段是否为TMPFS_MAGIC
。
这里有一个小工具,显示出这一点:
#include <sys/vfs.h>
#include <linux/magic.h>
#include <stdio.h>
int main(int argc, char** argv) {
struct statfs info;
statfs(argv[1], &info);
if (info.f_type == TMPFS_MAGIC) {
printf("It's tmpfs\n");
return 0;
} else {
printf("It's not tmpfs\n");
return 1;
}
}
例子:
$ ./isittmpfs /etc/passwd
It's not tmpfs
$ ./isittmpfs /dev/shm/pulse-shm-1358569836
It's tmpfs
(注意:这仅仅是如何确定文件是否在tmpfs上通过系统调用这个答案的例子。 不会提示即使示例代码是从shell调用的,也可以放到shell中)
您可能会先阅读'stat()'... – twalberg 2014-10-29 17:17:25
你为什么问?我相信你不应该测试给定文件在哪个文件系统上。给用户和系统管理员留下这种自由。 – 2014-10-29 20:03:23