在我发现 a进行清理之后,退出程序是否比退出CtrlC程序更正确?kill( 'INT', $$ )
exit()
问问题
1042 次
1 回答
4
Ctrl-C将INT
信号发送到您的进程。处理后发送另一个INT
没用:
perl -E'$SIG{INT}=sub{say "interrupted"; $c++ < 5 and kill INT => $$}; <>'
这是一种不寻常的实现方式递归gotos,但不会^C ^C ^C
终止程序。(按回车键退出)。
如果您想使用exit
该程序,请执行此操作(最好使用非零状态)。
相关报价来自perlmod
:
END
代码块尽可能晚地执行,也就是说,在 perl 完成程序运行之后并且就在解释器即将退出之前,即使它是作为函数的结果而退出的die()
。(但如果它通过 变形为另一个程序exec
,或者被信号吹出水面,则不是 - 你必须自己捕获它(如果可以的话)。
即默认情况下自中断kill INT => $$
不会执行END
块。这可能源于“让困难的事情成为可能”的理念。除非某些退出操作可能需要很长时间才能运行,否则您仍应在INT
或TERM
信号上执行它们。如果用户希望立即关机,仍然存在KILL
.
于 2013-05-12T11:50:37.547 回答