【问题标题】:Problem with the POSIX modulePOSIX 模块的问题
【发布时间】:2011-02-27 08:32:57
【问题描述】:
在将我的 mod_perl 站点从 Linux 主机移动到 FreeBSD 后,日志文件中出现以下错误:
您的供应商尚未定义 POSIX 宏 SIGRTMIN,用于 ../../lib/POSIX.pm(自动拆分为 ../../lib/auto/POSIX/SigRt/_init.al)第 993 行\n
脚本只是导入 POSIX 并利用一些功能(ceil 等)
我该如何解决这个问题?
【问题讨论】:
标签:
perl
posix
freebsd
mod-perl
【解决方案1】:
在模块中只尝试importing 几个(或没有)例程:
use POSIX ();
my $n = POSIX::ceil(1.1);
这曾经在同样的情况下对我有用,我不知道为什么:)
【解决方案2】:
FreeBSD大部分是POSIX-compliant。例如,它的doesn't define SIGRTMIN 和SIGRTMAX 在其signal.h 中。我们在POSIX's documentation 中收到警告:
此外,一些邪恶的供应商会
声称符合 1003.1,但实际上
不是这样:他们不会通过
PCTS(POSIX 合规性测试套件)。
例如,一个供应商可能没有定义
EDEADLK,或 errno 的语义
open(2) 设置的值可能不是
非常正确。 Perl 不会尝试
验证 POSIX 合规性。这意味着
你目前可以成功地说
“使用 POSIX”,然后在您的
您发现您的供应商拥有的程序
一直松懈,没有可用的 ICANON
毕竟宏。这可能是
被认为是一个错误。
eugene y 的解决方案可能会起作用,因为它会阻止自动导出到您的命名空间,但请确保在对 ceil 等的任何调用前加上 POSIX::。