【发布时间】:2017-10-06 07:11:48
【问题描述】:
从终端运行时,以下代码的行为符合预期:
perl -e 'kill -2, $$; warn HERE, $/'
它发送自己SIGINT 并在到达“这里”之前死亡:
~# perl -e 'kill -2, $$; warn HERE, $/'
~# echo $?
130
~#
问题:从 shell 脚本运行时,相同的代码无法杀死自己的 PID:
~# cat 1.sh
perl -e 'kill -2, $$; warn HERE, $/'
~#
~# sh 1.sh
HERE
~#
~# echo $?
0
~#
另一方面,用 shell 替换 perl 的 kill 可以正常工作:
~# cat 2.sh
perl -e 'qx/kill -2 $$/; warn HERE, $/'
~#
~# sh 2.sh
~#
~# echo $?
130
~#
不太明白这里发生了什么,请帮忙..
【问题讨论】:
-
顺便说一句,
kill INT => -$$是写kill -2, $$更好的方式。
标签: perl terminal signals kill-process