perl如何捕获和处理sigpipe

perl如何捕获和处理sigpipe,perl,Perl,我想在收到sigpipe时调用一个子程序。我尝试了以下方法: $SIG{'PIPE'} = sub { print "Got sigterm \n"; }; 然而,我不断得到错误: Signal SIGPIPE received, but no signal handler set. 我可以做$SIG{'PIPE'}='IGNORE',但是如何调用子例程我认为只有在使用线程时才会显示该消息。我相信您认为抛出信号的线程与设置信号处理程序的线程不同。看,我认为该消息仅来自线程。您可能没有

我想在收到sigpipe时调用一个子程序。我尝试了以下方法:

$SIG{'PIPE'} = sub {
    print "Got sigterm \n";
};
然而,我不断得到错误:

Signal SIGPIPE received, but no signal handler set.

我可以做
$SIG{'PIPE'}='IGNORE'
,但是如何调用子例程

我认为只有在使用线程时才会显示该消息。我相信您认为抛出信号的线程与设置信号处理程序的线程不同。

看,我认为该消息仅来自线程。您可能没有为该线程设置信号处理程序。您的代码看起来是正确的,在您没有显示的部分中肯定发生了其他事情。你能发布一个完整的例子吗?我从一个线程中得到了sigpipe。但是将处理程序放在线程之外。这就是我出错的原因。多亏了@ikegami@Jens链接死了,你现在可以在这里读文章了:哦,信号和线程?玩得开心点;)也就是说,我真的建议不要那样做。