2009-10-29 101 views
4

我在Linux中使用vfat驱动程序安装了FAT文件系统。 我想知道如何能够读取文件的vfat属性,如“隐藏”和“只读”。如何使用C读取Linux中文件的vfat属性C

基于我到目前为止阅读,如果我使用stat() glibc的命令上的一个文件,我只会越来越这里列出的文件属性: http://www.gnu.org/s/libc/manual/html_node/Attribute-Meanings.html#Attribute-Meanings

这些不包含任何VFAT属性然而。任何人都可以帮忙吗?

感谢,

Katsupoy

回答

6

FAT的DOS属性不能很好地映射到Unix文件系统的模型,因此Linux的驱动程序vfat没有反映他们。

而不是安装文件系统,使用mtools从用户空间读取文件系统。


编辑我说谎。显然vfat驱动程序能够处理这些DOS属性,至少从2.4.29开始(我认为;我的历史记录不会回到那么远)。

#include <inttypes.h> 
#include <sys/ioctl.h> 
#include <linux/msdos_fs.h> 

int fd = open("/mnt/fat/...", ...); 
__u32 attrs; 
ioctl(fd, FAT_IOCTL_GET_ATTRIBUTES, &attrs); 
attrs = ATTR_NONE; /* ATTR_{RO,HIDDEN,SYS,VOLUME,DIR,ARCH} */ 
ioctl(fd, FAT_IOCTL_SET_ATTRIBUTES, &attrs); 
+0

谢谢,我一定会尝试mtools。 除了mtools,还有没有其他已知的方法(或破解)能够检索FAT属性? – Katsupoy 2009-10-29 16:01:15

+0

这样比较好,我明天会在我的机器上试试这个。 FAT_IOCTL_GET_ATTRIBUTES(可能对我有用的其他选项)记录在哪里?谢谢。 – Katsupoy 2009-10-29 16:30:21

+0

我在通过'/ usr/src/linux/fs/fat/file.c'进行挖掘时找到了它们 - 我以前从未见过有关这些ioctls的任何文档。 – ephemient 2009-10-29 17:19:49