Perl INT处理程序和Bash STDERR重定向

Perl INT处理程序和Bash STDERR重定向,perl,bash,signals,Perl,Bash,Signals,foo.pl捕获INT信号,即Ctrl-C. foo.pl按预期工作 使用foo.pl 2>&1 | tee foo.log信号捕获似乎不起作用 有什么线索吗?当你说: foo.pl 2>&1 | tee foo.log 然后,CtrlC导致tee终止,从而将SIGPIPE发送到管道中较早的进程 您似乎想捕获SIGPIPE,但需要注意。Hmmm。。。我尝试了“$SIG{'PIPE}=\&INT\u handler;”没有成功。我想提到的是,“foo.pl | tee foo.lo

foo.pl
捕获
INT
信号,即
Ctrl-C.

foo.pl
按预期工作

使用
foo.pl 2>&1 | tee foo.log
信号捕获似乎不起作用

有什么线索吗?

当你说:

foo.pl 2>&1 | tee foo.log
然后,CtrlC导致
tee
终止,从而将
SIGPIPE
发送到管道中较早的进程


您似乎想捕获
SIGPIPE
,但需要注意。

Hmmm。。。我尝试了“$SIG{'PIPE}=\&INT\u handler;”没有成功。我想提到的是,“foo.pl | tee foo.log”没有问题。如果您希望perl信号处理程序的输出以
foo.log
结尾,那么这种情况永远不会发生
tee
在perl进程收到信号之前终止并停止写入
foo.log
。OK。它起作用了。我只是被告知我立即得到了一个提示,尽管INT-hander需要一些时间来处理。似乎在与终端断开连接的“后台”中工作。