这可能是一个愚蠢的问题,但假设我给出了一个文件路径,并且我想知道它是否指向 tmpfs 上的文件(即,它是内存中的文件)。如何仅使用 Linux 系统调用来做到这一点?(也就是说,我不能去shell。)
使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
例子:
$ ./isittmpfs /etc/passwd
It's not tmpfs
$ ./isittmpfs /dev/shm/pulse-shm-1358569836
It's tmpfs
Run Code Online (Sandbox Code Playgroud)
(注意:这只是如何通过系统调用确定文件是否位于 tmpfs 上的示例。此答案并不建议放入 shell,即使示例代码是从 shell 调用的)
| 归档时间: |
|
| 查看次数: |
1892 次 |
| 最近记录: |