什么是根目录及其父目录的d_ino?

时间:2016-01-12 09:14:28

标签: unix inode

我正在进行Unix编程练习,找出目录及其父目录的i-node编号,我知道命令“ls -ldi”满足我的要求,但正如我所说我正在进行Unix编程练习想进一步了解它,所以我写下面的代码:

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

int
main(int argc, char *argv[])
{
    DIR *dp;
    struct dirent *dirp;

    if(argc != 2)
        fprintf(stderr, "usage: ex1 directory_name");

    if((dp = opendir(argv[1])) == NULL)
        fprintf(stderr, "can't open %s", argv[1]);

    while((dirp = readdir(dp)) != NULL)
        if(strcmp(dirp->d_name, ".") == 0 || strcmp(dirp->d_name, "..") == 0)
            printf("inode number of %s is %llu\n", dirp->d_name, dirp->d_ino);

    closedir(dp);

    exit(0);
}

我只检查给定路径的所有条目,并比较名称是点还是点,如果是,则打印出它的d_ino。

以下是我感到困惑的事情: 如果我运行“./a.out。”,这就像“ls -ldi。”那样,意味着它们都给出当前目录的i节点号及其父目录,但如果我运行“./a。 out /“期望找出根目录及其父目录的索引节点号,然后我的程序打印i-node number为”。“和1为“..”但命令“ls -ldi /。”和“ls -ldi / ..”都打印2。

所以我想知道为什么会这样。

谢谢!

0 个答案:

没有答案