8

Cwd 模块的文档指出这fast_abs_path是“更危险但可能更快的版本abs_path”。在什么方面是危险的?什么情况下比较快?行为是否因平台而异?

4

1 回答 1

11

fast_abs_path调用chdir以让内核解析通向您一次性传递的路径的路径,而不是仔细检查每个组件并逐个构建新路径;问题是权限可能会阻止它chdir之后返回原始目录。(一些系统可以使用openfchdir解决这个问题,但它并不是在所有运行 Perl 的平台上都可靠地可用。)

这是否会发生取决于您的脚本是否可以在无法直接访问的目录中执行。在类 Unix 系统上,当 setuid 包装器chdir进入受限权限区域然后删除 setuid 时,可能会发生这种情况。(历史上,受限权限位于名为 的路径组件上lock;各种邮件和 Usenet 新闻子系统都使用它来保护其队列目录。)

于 2012-05-11T16:45:00.167 回答