C编程:如果我知道inode-number,如何获取目录名

时间:2014-06-06 02:20:10

标签: c linux unix inode

如果我知道它的inode号码怎么能获得目录名?需要代码。感谢。

下面的代码通过..传递了dir_name,然后我得到了它的i-node编号,但我还想要的是目录名。

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

2 个答案:

答案 0 :(得分:1)

除非你有一个索引映射名称的inode,你将不得不递归地遍历目录结构,直到找到你正在寻找的inode的名称(你可能找不到)。

如果你的程序的一部分已经知道目录的名称,你应该找到一种方法将它传递给你的代码。

答案 1 :(得分:0)

不确定您是否可以轻松地从inode编号中获取它。很多东西可能指向相同的inode(硬链接,软链接等)。如果您只是寻找 路径,您可以打印出来并感觉良好,您可以使用realpath。下面的例子很容易在Ubuntu 12.04上编译,也应该在BSD系统上运行。 realpath会占用所有.././内容,从而形成一个体面的路径(虽然不一定是一条独特的路径。

#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);
}