POSIX模块出现问题

时间:2010-06-03 14:33:46

标签: perl posix freebsd mod-perl

将我的mod_perl站点从Linux主机移动到FreeBSD之后,我在日志文件中出现了这个错误:

  
    

您的供应商尚未定义POSIX宏SIGRTMIN,用于../../lib/POSIX.pm(autosplit into ../../lib/auto/POSIX/SigRt/_init.al)第993行\ n

  

脚本只是导入POSIX并使用一些函数(ceil等)

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

FreeBSD 主要是 POSIX-compliant。例如,SIGRTMIN中有doesn't define SIGRTMAXsignal.h。我们在POSIX's documentation

中受到警告
  

此外,一些邪恶的供应商会   要求1003.1合规,但事实上   不是这样的:他们不会通过   PCTS(POSIX一致性测试套件)。   例如,一个供应商可能没有定义   EDEADLK,或errno的语义   由open(2)设置的值可能不是   完全正确。 Perl不会尝试   验证POSIX合规性。这意味着   你现在可以说成功了   “使用POSIX”,然后在你的   程序,你发现你的供应商有   松懈,没有可用的ICANON   毕竟宏。这可能是   被认为是一个错误。

eugene y的解决方案可能有效,因为它会阻止自动导出到您的命名空间,但请务必使用ceilPOSIX::等任何调用添加前缀。

答案 1 :(得分:3)

尝试importing模块中只有少数(或没有)例程:

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

这曾经在同样的情况下为我工作,我不知道为什么:)