有没有办法知道信号处理程序中`local`变量的先前值?

时间:2011-08-01 01:48:18

标签: perl

如何在代码块执行期间在信号处理程序中恢复STDOUT?

有没有办法知道信号处理程序中local变量的先前值?

3 个答案:

答案 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";
}