2010-06-03 74 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等。