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