我有一種情況,我需要獲取文件名,以便我可以調用readlink()函數。我所擁有的是一個整數,它最初通過open()命令存儲爲文件描述符。問題是,我沒有訪問執行open()命令的函數(如果我這樣做了,那麼我不會發布這個)。 open()的返回值存儲在有有權訪問的結構中。使用文件描述符與readlink()
char buf[PATH_MAX];
char tempFD[2]; //file descriptor number of the temporary file created
tempFD[0] = fi->fh + '0';
tempFD[1] = '\0';
char parentFD[2]; //file descriptor number of the original file
parentFD[0] = (fi->fh - 1) + '0';
parentFD[1] = '\0';
if (readlink(tempFD, buf, sizeof(buf)) < 0) {
log_msg("\treadlink() error\n");
perror("readlink() error");
} else
log_msg("readlink() returned '%s' for '%s'\n", buf, tempFD);
這是FUSE文件系統的一部分。該結構稱爲fi,文件描述符存儲在類型爲uint64_t的fh中。由於這個程序執行的方式,我知道兩個鏈接文件的文件描述符號碼總是相隔1。至少這是我的工作假設,我試圖用此代碼驗證。
這編譯,但是當我運行它時,我的日誌文件每次都顯示一個readlink錯誤。我的文件描述符有正確的整數值存儲在它們中,但它不起作用。
有誰知道如何從這些整數值中獲取文件名?謝謝!