web-dev-qa-db-ja.com

ファイルシステムをトラバースせずにファイルのすべてのハードリンクを見つける

私は このページで iノードにはリンクカウンターがあり、ファイルの数を知ることができます(「ディレクトリエントリ」を読んでください)。このiノードをポイントします。ファイルシステム全体をトラバースせずに、どのディレクトリにそのようなエントリが含まれているかを知る方法はありますか?この情報はどこかに保存されていますか?

struct inode {
    kdev_t                       i_dev;
    unsigned long                i_ino;
    umode_t                      i_mode;
    nlink_t                      i_nlink;
    uid_t                        i_uid;
    gid_t                        i_gid;
    …
};
9
qdii

いいえ。iノードを指すディレクトリエントリは一方向のリンクです。 iノードはディレクトリエントリを指していません。

Iノードを指すディレクトリエントリの完全なリストを見つけるには、iノードのリンク数を説明するのに十分なディレクトリエントリが見つかるまでファイルシステムをトラバースする必要があります。

10
Celada