PATH_MAX和NAME_MAX之间的关系是什么?我该如何获取?
在 limits.h
文件里,还有一些 POSIX 手册的地方,会提到 PATH_MAX
和 NAME_MAX
。这两个东西有什么关系呢?它们的官方文档在哪里?我怎么能在程序运行时,以及在编译时获取它们的值呢?这些问题在 C、Python 和 GNU(命令行)环境中又该怎么处理呢?
1 个回答
7
PATH_MAX
是文件系统路径的最大长度。NAME_MAX
是某个特定位置文件名的最大长度。所以,像 /foo/bar
这样的路径受到 PATH_MAX
的限制,而其中的 bar
部分的长度则受到 NAME_MAX
的限制。
你可以通过 pathconf
在运行时获取这些值,分别是 _PC_PATH_MAX
和 _PC_NAME_MAX
,不过一般来说,大家习惯在编译时直接使用固定的宏值。我想使用运行时的选项可能更好,因为这样可以支持更长的值,但我不太确定有没有系统能通过 pathconf
返回比 POSIX_FOO_MAX
的值更大的值。