在linux / unix下有相当于WinAPI的MAX_PATH吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (152)

如果我想分配一个保证足够大以保存任何有效绝对路径+文件名的char数组(C),它需要多大。

在Win32上,有MAX_PATH定义。Unix / linux的等价物是什么?

提问于
用户回答回答于

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

该功能的POSIX.1-2001标准版本由于设计而中断,因为无法为输出缓冲区resolve_path确定合适的大小。根据POSIX.1-2001,大小为PATH_MAX的缓冲区就足够了,但PATH_MAX不一定是定义的常量,可能需要使用pathconf(3)来获取。并且询问pathconf(3)并没有真正的帮助,因为一方面POSIX警告pathconf(3)的结果可能很大并且不适合mallocing内存,另一方面 pathconf(3)可能会返回-1表示PATH_MAX不受限制

用户回答回答于

到目前为止,其他答案似乎都是关于事物的* nix方面,但我会在Windows上添加警告。

MAX_PATH确实被定义了,并且可能甚至适用于存储在FAT或FAT32上的文件。但是,任何路径名都可以加上前缀\\?\来指示Windows API忽略MAX_PATH并让文件系统驱动程序自行构思。

有关Windows规则的很好说明在MSDN上。规则比我在这里总结的要复杂得多。

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动