内容

名称

perlfreebsd - FreeBSD 系统上的 Perl 5 版本

描述

本文档描述了 FreeBSD 的一些特性,这些特性会影响 Perl 5 版本(以下简称 Perl)的编译和/或运行方式。

使用 ithreads 的 readdir_r 导致 FreeBSD 内核转储

当 Perl 配置为使用 ithreads 时,它将优先使用可重入库调用,而不是非可重入版本。FreeBSD 版本 4.5 及更早版本中的 readdir_r 函数存在一个错误,在读取大型目录时会导致 SEGV。FreeBSD libc 的补丁程序已提供(参见 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=30631),该补丁程序已集成到 FreeBSD 4.6 中。

$^X 在 FreeBSD 中并不总是包含完整路径

perl 尽可能通过询问操作系统来将 $^X 设置为完整路径。在 FreeBSD 上,perl 解释器的完整路径是通过使用 sysctlKERN_PROC_PATHNAME(如果支持)来找到的,否则通过读取符号链接 /proc/curproc/file 来找到。FreeBSD 7 及更早版本存在一个错误,导致这两种方法有时会返回不正确的值(参见 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=35703)。在这些情况下,perl 将回退到使用 C 的 argv[0] 值作为 $^X 的旧行为。

作者

Nicholas Clark <[email protected]>,整理了 Slaven Rezic 和 Tim Bunce 提供的智慧。

请将任何错误、更新或建议报告到 https://github.com/Perl/perl5/issues