如果我想分配一个char数组(用C表示),该数组保证足够大以容纳任何有效的绝对路径名和文件名,那么它需要多大。
在Win32上,有MAX_PATH定义。Unix / linux相当于什么?
有一个PATH_MAX,但是有点问题。从realpath(3)手册页的bug部分中:
PATH_MAX
此功能的POSIX.1-2001标准版本在设计上已被破坏,因为无法确定输出缓冲区 resolve_path 的合适大小。根据POSIX.1-2001,大小为 PATH_MAX 的缓冲区就足够了,但是 PATH_MAX 不必是定义的常数,可能必须使用pathconf(3)获得。询问pathconf(3)并没有真正的帮助,因为POSIX一方面警告pathconf(3)的结果可能很大且不适合分配内存,另一方面, pathconf(3)可能会将-1返回至表示 PATH_MAX 没有边界。