一尘不染

在linux / unix下是否有等同于WinAPI的MAX_PATH?

linux

如果我想分配一个char数组(用C表示),该数组保证足够大以容纳任何有效的绝对路径名和文件名,那么它需要多大。

在Win32上,有MAX_PATH定义。Unix / linux相当于什么?


阅读 346

收藏
2020-06-02

共1个答案

一尘不染

有一个PATH_MAX,但是有点问题。从realpath(3)手册页的bug部分中:

此功能的POSIX.1-2001标准版本在设计上已被破坏,因为无法确定输出缓冲区 resolve_path
的合适大小。根据POSIX.1-2001,大小为 PATH_MAX 的缓冲区就足够了,但是 PATH_MAX
不必是定义的常数,可能必须使用pathconf(3)获得。询问pathconf(3)并没有真正的帮助,因为POSIX一方面警告pathconf(3)的结果可能很大且不适合分配内存,另一方面,
pathconf(3)可能会将-1返回至表示 PATH_MAX 没有边界。

2020-06-02