是否可以以编程方式设置$的前7位?

时间:2015-12-18 11:34:07

标签: perl

当我实现子进程来处理信号时,使用可以优雅地退出子进程的自定义信号处理程序来说SIGTERMSIGUSR1,是否可以让父进程知道哪个信号导致出口? $?的第一个7位设置为指示子进程死亡的信号。但是我不确定我们如何以编程方式设置它。拨打exit()只会设置($? >> 8)的值。

2 个答案:

答案 0 :(得分:4)

我的方法是:在信号处理程序中,卸载自定义信号处理程序并将信号操作更改为Terminate。然后在主控制流程中,包括重新引发相同信号的逻辑。

答案 1 :(得分:1)

它表示杀死孩子的信号,因此孩子必须向自己发送信号。

$ perl -E'system($^X, -e => q{kill TERM => $$}); say $?;'
15

如果您有信号处理程序,请先取消设置。

$SIG{TERM} = 'DEFAULT';