2010-06-03 60 views
2

從Linux的移動我的mod_perl網站託管到FreeBSD後,我有這樣的錯誤日誌文件:問題與POSIX模塊

你的供應商沒有定義POSIX宏觀SIGRTMIN,在../使用。 ./lib/POSIX.pm(自動分割成../../lib/auto/POSIX/SigRt/_init.al)線993 \ n

腳本只是出口POSIX並利用某些功能(細胞等)

我該如何解決這個問題?

回答

3

嘗試importing只有很少(或無)例程從模塊:

use POSIX(); 
my $n = POSIX::ceil(1.1); 

這爲我所用相同的情況下工作,我不知道爲什麼:)

+0

這工作,謝謝。 – planetp 2010-06-03 20:11:35

4

FreeBSD是主要是POSIX-compliant。例如,其doesn't defineSIGRTMINSIGRTMAX在其signal.h中。我們在POSIX's documentation警告不要這樣:

此外,一些邪惡的廠商將 要求遵守1003.1,但實際上 並不是這樣,他們將無法通過 PCTS(POSIX一致性測試套件)。例如,一個供應商可能未定義 EDEADLK,或open(2)設置的errno 值的語義可能不是 很正確。 Perl不會嘗試 驗證POSIX合規性。這意味着您目前可以成功地說 「使用POSIX」,然後在您的 程序中發現您的供應商有 鬆懈,並且最終沒有可用的ICANON 宏。這可能是 被解釋爲一個錯誤。

eugene y的解決方案可能會奏效,因爲它會阻止自動導出到您的命名空間,但一定要任何電話與POSIX::前綴來ceil等。