2014-06-06 31 views
-1

如果知道它是inode編號,如何獲取目錄名稱?需要代碼。謝謝。C編程:如果知道inode編號,如何獲取目錄名稱

下面的代碼通過dir_name ..,然後我得到它的i節點號碼,但我也想要的是目錄名稱。

/*child stat*/ 
stat(dir_name, &sb); 
if (stat(dir_name, &sb) == -1) { 
    perror("stat"); 
    exit(EXIT_FAILURE); 
} 
childIno = (long) sb.st_ino; 
+0

的inode來的路徑是不是1:1的映射。 – Matt

回答

1

除非你有一個索引映射的inode來的名字,你將不得不遞歸走的目錄結構,直到你找到你要找的inode的(你可能無法找到)的名稱。

如果你的程序的一部分已經知道目錄的名字,你應該找到一種方法將它傳遞給你的代碼。

0

不確定你可以輕鬆地從inode號碼中輕鬆獲取它。許多事情可能指向相同的inode(硬鏈接,軟鏈接等)。如果您只是在尋找a路徑,您可以打印出來並感覺良好,可以使用實時路徑。下面的例子很容易在Ubuntu 12.04上編譯,並且也適用於BSD系統。 realpath會吃掉所有的導致一個體面的尋找路徑.././東西(雖然不是necesarily的唯一路徑

#include <stdlib.h> 
#include <stdio.h> 

int main(int argc, char *argv[]){ 
    char *test_path = realpath("..", NULL); 

    if (test_path) { 
    printf("Path resolves to %s\n", test_path); 
    } else { 
    printf("Couldn't resolve path\n"); 
    } 

    exit(0); 
} 
相關問題