如何在代码块执行期间在信号处理程序中恢复STDOUT?
有没有办法知道信号处理程序中local
变量的先前值?
答案 0 :(得分:2)
{
open my $devnull, '>', '/dev/null';
local *STDOUT = $devnull;
...
}
答案 1 :(得分:0)
在本地之前从STDOUT复制一个不同的文件句柄,并在信号处理程序中使用它。
答案 2 :(得分:0)
可以使用select来保存旧的文件句柄,如下所示:
{
open my $fh, '>', '/dev/null';
my $oldstdout = select($fh);
print $oldstdout "This prints to STDOUT";
print "Junk to /dev/null"
select $oldstdout;
print "Back to STDOUT";
}