perl 信号的“默认”行为是什么?

问题描述 投票:0回答:1

perlipc 文档,信号部分,除其他外还指出:

您还可以选择指定字符串“IGNORE”或“DEFAULT”作为处理程序,在这种情况下,Perl 将尝试丢弃信号或执行默认操作。

现在我已经阅读了有关如何为不同信号添加自定义处理程序、如何忽略信号以及如何恢复“默认”行为的各种内容。 然而,我的问题是:不同信号的“默认”行为到底是什么?我在哪里可以查到这个?这是在任何地方定义的吗(至少是平台定义的)?到目前为止,我在寻找更深入的文档方面一直不走运。

当我按 CTRL+c 时,我试图弄清楚 perl 解释器在我的情况下到底做了什么,例如对所有对象调用析构函数,或者如果它只是当时就退出。

perl
1个回答
0
投票

设置为默认值的信号意味着 perl 解释器本身不会捕获或处理该信号:perl 进程的行为是该信号的标准操作系统行为。一般来说,这意味着进程立即退出(可能带有 coredump),但没有清理操作,无论是在语言级别(END 块、析构函数等)还是在进程级别。默认情况下会忽略一些信号,还有一些会导致进程挂起(例如 SIGSTOP)。

在 Linux 上,“man 7 signal”提供了每个信号的默认操作的表。其他操作系统大概提供了类似的列表,对于 POSIX 和类 UNIX 操作系统,大多数标准信号将具有与 Linux 相同的默认行为。

© www.soinside.com 2019 - 2024. All rights reserved.