在Perl中是否可以为接收到的所有信号仅安装一个信号处理程序?这背后的原因是,我不知道我的Perl代码在运行时会收到什么信号。我可以看到的一种方法是将所有可用信号指向我的自定义信号处理程序,但是我不想这样做。有没有简单的方法可以做到这一点?就像是:
$SIG{'ALL'} = 'sigHandler';
最佳答案
您真的不想这样做。仅针对您需要以不同于默认方式处理的信号安装信号处理程序(我们无法为您提供帮助,因为您没有提到您正在编写哪种类型的应用程序)。
在大多数正常情况下,您根本不需要编写信号处理程序-默认设置是完全按照您的需要进行的。您现在应该阅读perldoc perlipc,以便您了解与正常情况不同的情况。
您可以使用sigtrap pragma一次修改多个信号:这对于添加正常捕获的信号的处理程序或使正常错误处理更加严格非常有用。
# install a trivial handler for all signals, as a learning tool
use sigtrap 'handler' => \&my_handler, 'signal';
sub my_handler
{
print "Caught signal $_[0]!\n";
}
关于perl - 我可以为Perl中的所有信号设置一个信号处理程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3841032/