クリーンアップを行うために をキャッチした後、 でプログラムを終了するよりもCtrlC、 でプログラムを終了する方が正しいですか?kill( 'INT', $$ )
exit()
1042 次
1 に答える
4
Ctrl-シグナルをプロセスにC送信INT
します。INT
役に立たない処理後に別の送信:
perl -E'$SIG{INT}=sub{say "interrupted"; $c++ < 5 and kill INT => $$}; <>'
これは珍しい実装方法です再帰^C ^C ^C
後戻りしますが、プログラムを終了する量はありません。(Enter キーを押して終了します)。
プログラムを実行したい場合はexit
、それを実行してください(できればゼロ以外のステータスで)。
からの関連する引用perlmod
:
END
コードブロックはできるだけ遅く実行されます。つまり、perl がプログラムの実行を終了した後、インタプリタが関数の結果として終了する場合でも、インタプリタが終了する直前に実行されますdie()
。(ただし、 を介して別のプログラムにモーフィングしている場合exec
や、信号によって水から吹き飛ばされている場合はそうではありません。(可能であれば) 自分でトラップする必要があります)。
つまり、自己中断はデフォルトでブロックをkill INT => $$
実行しません。END
これはおそらく、「難しいことを可能にする」という哲学から来ています。INT
特定の終了操作の実行に非常に長い時間がかかる可能性がある場合を除き、これらの操作はまたはTERM
シグナルに対して実行する必要があります。ユーザーがすぐにシャットダウンしたい場合でも、KILL
.
于 2013-05-12T11:50:37.547 に答える