perlfreebsd - FreeBSD 系統上的 Perl 版本 5
本文說明 FreeBSD 的各種功能,這些功能會影響 Perl 版本 5(以下簡稱 Perl)的編譯和/或執行方式。
當 Perl 設定為使用 ithreads 時,它會優先使用可重新進入的函式庫呼叫,而不是不可重新進入的版本。FreeBSD 4.5 及更早版本中 readdir_r 函式有一個錯誤,在讀取大型目錄時可能會導致 SEGV。FreeBSD libc 有可用的修補程式(請參閱 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=30631),已整合到 FreeBSD 4.6 中。
Perl 透過詢問作業系統,盡可能將 $^X
設定為完整路徑。在 FreeBSD 上,如果支援,則會使用 sysctl
和 KERN_PROC_PATHNAME
尋找 Perl 詮釋器的完整路徑,否則會透過讀取符號連結 /proc/curproc/file。FreeBSD 7 及更早版本有一個錯誤,有時這兩種方法都會傳回不正確的值(請參閱 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=35703)。在這些情況下,Perl 會採用舊行為,使用 C 的 argv[0]
值作為 $^X
。
Nicholas Clark <nick@ccl4.org>,彙整 Slaven Rezic 和 Tim Bunce 提供的智慧。
請將任何錯誤、更新或建議回報至 https://github.com/Perl/perl5/issues。