POSIX 模块的问题

发布于 2024-09-03 16:39:18 字数 285 浏览 10 评论 0 原文

将我的 mod_perl 站点从 Linux 托管转移到 FreeBSD 后,日志文件中出现以下错误:

<块引用>

您的供应商尚未定义 POSIX 宏 SIGRTMIN,在 ../../lib/POSIX.pm(自动拆分为 ../../lib/auto/POSIX/SigRt/_init.al)第 993 行使用\n

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

我该如何解决这个问题?

After moving my mod_perl site from Linux hosting to FreeBSD, I have this error in the logfile:

Your vendor has not defined POSIX macro SIGRTMIN, used at ../../lib/POSIX.pm (autosplit into ../../lib/auto/POSIX/SigRt/_init.al) line 993\n

The script just imports POSIX and utilizes some functions (ceil, etc)

How can I solve this issue ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

秋心╮凉 2024-09-10 16:39:18

尝试从模块中导入仅几个(或没有)例程:

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

这曾经适用于我也遇到同样的情况,不知道为什么:)

Try importing only few (or none) routines from the module:

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

This used to work for me in the same circumstances, I don't know why :)

拧巴小姐 2024-09-10 16:39:18

FreeBSD 大部分POSIX 兼容。例如,它没有定义 signal.h 中的 >SIGRTMIN 和 SIGRTMAXPOSIX 文档中对此提出了警告:

此外,一些不法商贩还会
声称符合 1003.1,但实际上
事实并非如此:他们不会通过
PCTS(POSIX 合规性测试套件)。
例如,某个供应商可能没有定义
EDEADLK,或 errno 的语义
open(2) 设置的值可能不是
完全正确。 Perl 并不试图
验证 POSIX 合规性。这意味着
你现在可以成功地说
“使用 POSIX”,然后在你的
您发现您的供应商拥有的程序
太松懈了,没有可用的ICANON
毕竟宏观。这可能是
被视为一个错误。

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

FreeBSD is mostly POSIX-compliant. For example, it doesn't define SIGRTMIN and SIGRTMAX in its signal.h. We are warned against this in POSIX's documentation:

Furthermore, some evil vendors will
claim 1003.1 compliance, but in fact
are not so: they will not pass the
PCTS (POSIX Compliance Test Suites).
For example, one vendor may not define
EDEADLK, or the semantics of the errno
values set by open(2) might not be
quite right. Perl does not attempt to
verify POSIX compliance. That means
you can currently successfully say
"use POSIX", and then later in your
program you find that your vendor has
been lax and there's no usable ICANON
macro after all. This could be
construed to be a bug.

eugene y's solution might work as it will prevent auto exporting into your namespace, but be sure to prefix any calls to ceil and so on with POSIX::.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文