1
我試圖實現一個FUSE文件系統,包括設置/獲取擴展文件屬性的能力。在這種情況下,我感興趣的屬性是創建布爾條件以將文件標記爲加密的屬性。假設我有一個名爲test.txt的文件。從一個終端窗口,我很容易執行以下操作:FUSE擴展屬性
setfattr -n user.encrypted -v 1的test.txt
getfattr -n user.encrypted的test.txt
和得到的輸出:
#文件:test.txt的
user.encrypted = 「1」
所以,我知道我的系統已正確設置爲使用擴展屬性。
但我堅持設置並獲取這些屬性編程從保險絲內。例如,我有以下功能:
/* File open operation */
int bb_open(const char *path, struct fuse_file_info *fi)
{
int retstat = 0;
int fd;
int isEncrypted;
char user[] = "user";
char encAttr[] = "encrypted";
fd = open(path, fi->flags);
if (fd < 0)
retstat = bb_error("bb_open open");
log_msg("\nAbout to get encryption attribute\n");
/* get the encryption attribute */
isEncrypted = fgetxattr(fd, user, encAttr, 1);
log_msg("\nisEncrypted: %d\n", isEncrypted);
return retstat;
}
當運行此,即使在命令行設置此屬性後,fgetxattr總是失敗(即,其返回的值-1)。在我的日誌文件的輸出是:
isEncrypted = -1
顯然,我錯誤地調用這個函數,但我不知道該如何糾正。誰能幫忙?謝謝。