gpt4 book ai didi

unix - realpath() 可移植性问题是否已过时?

转载 作者:行者123 更新时间:2023-12-04 10:22:18 24 4
gpt4 key购买 nike

调用 Unix realpath() 函数的传统方法是 realpath(pathname, buf) 其中 buf 是用户提供的PATH_MAX 字节空间的缓冲区。这是有问题的,因为 PATH_MAX 对于大多数文件名来说不必要地大,但可能小于实际的操作系统路径名长度限制。

后来添加了传递 NULL 指针代替 buf 的功能。在这种情况下,realpath() 将使用 malloc() 动态分配大小合适的缓冲区。这使得该功能易于安全使用。由于 NULL 支持是后来添加的,因此并未普遍实现,因此可移植程序不能依赖它。

POSIX Issue 7, 2018 edition现在保证 NULL 支持。 POSIX 的认可似乎意味着可移植性问题几乎消失了。是否有任何正在使用的 Unix 系统(例如,从过去十年开始),其中 realpath() 不支持提供 NULL 缓冲区?

最佳答案

realpath(path, NULL) 适用于至少以下系统的最新版本:

  • Darwin
  • 蜻蜓 BSD
  • FreeBSD
  • 俳句
  • Linux/glibc
  • Linux/音乐
  • 小型机
  • NetBSD
  • OpenBSD
  • Solaris (OmniOS)

关于unix - realpath() 可移植性问题是否已过时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60802732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com