1つのファイルのハードリンクの数に制限はありますか?どこでも指定されていますか?Linuxの安全な制限は何ですか?そして、他のPOSIXシステムについてはどうでしょうか?
1つのファイルのハードリンクの数に制限はありますか?どこでも指定されていますか?Linuxの安全な制限は何ですか?そして、他のPOSIXシステムについてはどうでしょうか?
回答:
Posixでは、オペレーティングシステムがハードリンクの概念を理解している必要がありますが、特定の状況でハードリンクを実際に使用できることは必要ではありません。を呼び出すことで、特定の場所で許可されるハードリンクの数(ファイルシステムの種類によって異なる場合があります)を確認できます。下限は、()8であるが、これはかなりのように無意味である(許可が...、フルディスクを拒否された)とにかく、他の多くのエラーを報告することができます。pathconf(filename, _PC_LINK_MAX)
_POSIX_LINK_MAX
link()
stat
構造タイプのフィールドに格納リンク数はnlink_t
、ので、このフィールドの種類は、システム上の上限を与えます。しかし、そこまで到達できない可能性は十分にあります:nlink_t
多くのファイルシステムでは32ビットで16ビットしか持たないのが一般的です(Linuxソースの簡単なgrepは、ext [234]、NTFS、UFS、 XFSは、カーネルデータ構造で16ビットのリンクカウントを使用します)。
Linuxカーネルソース(* include / linux / ext3_fs.h *)のext3 iノード構造のディスク形式を調べて、リンク数が16ビット数としてリストされている
struct ext3_inode {
... snip ...
__le16 i_links_count; /* Links count */
}
これは、ext3ファイルシステムが最大65535のリンクを持つことができることを意味すると思います。
他のファイルシステムの値はチェックしていません。