PATH_MAX和NAME_MAX之间的关系是什么,我如何获得?

Mat*_*ner 5 c python posix limits gnu

limits.hPOSIX联机帮助页中的各个位置,都有对PATH_MAX和的引用NAME_MAX.这些如何相互关联?他们的官方文件在哪里?如何在运行时获取它们,以及(在相关时)编译C,Python和GNU(shell)环境的时间?

Bor*_*lid 6

PATH_MAX是文件系统路径的最大长度。 NAME_MAX是文件名的最大长度(在特定位置)。因此,/foo/bar受 限制PATH_MAX,只有bar部分的长度受 限制NAME_MAX

您可以在运行时通过pathconf, as_PC_PATH_MAX和获得这些_PC_NAME_MAX,尽管标准做法通常只是在编译时使用静态宏。我认为使用运行时选项会更好,因为您可能会以这种方式支持更长的值,但我不确定什么(如果有)系统实际提供的返回pathconf值大于值的POSIX_FOO_MAX值。

  • 我正在用 Python 编写一个文件系统,所以它们实际上很有趣。我在我的设备文件上调用 `os.fpathconf` 作为对 `PATH_MAX` 的最佳猜测,而 `NAME_MAX` 是我通过 `struct statvfs` 返回的实现的属性。尽管缺少 Python 提示,但这是一个很好的答案。 (2认同)