这可能是一个愚蠢的问题,但假设我已经给出了文件路径,并且我想知道它是否指向tmpfs上的文件(也就是说,它是 - 记忆文件)。我怎么能只使用Linux系统调用呢? (也就是说,我无法进入外壳。)
答案 0 :(得分:4)
使用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 )