在给定文件在Linux上的路径的情况下,如何判断文件是否在tmpfs上



这可能是一个愚蠢的问题,但假设我得到了一个文件路径,我想知道它是否指向tmpfs上的一个文件(也就是说,它是一个内存中的文件)。我如何只使用Linux系统调用来实现这一点?(也就是说,我不能去外壳。)

使用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 tmpfsn");                                                  
    return 0;                                                                
  } else {                                                                   
    printf("It's not tmpfsn");                                              
    return 1;                                                                
  }                                                                          
}

示例:

$ ./isittmpfs /etc/passwd
It's not tmpfs
$ ./isittmpfs /dev/shm/pulse-shm-1358569836 
It's tmpfs

(注意:这只是如何通过系统调用确定文件是否在tmpfs上的一个示例。这个答案并不建议删除到shell,即使示例代码是从shell调用的)

相关内容

  • 没有找到相关文章

最新更新