2009-10-29 100 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