2012-07-11 28 views
5

Làm cách nào để tôi có thể đặt mã phải thực thi trước khi tập lệnh Perl dừng?Thực hiện một số mã luôn trước khi tập lệnh Perl kết thúc

Ở đây how to run piece of code just before the exit of perl script Tôi đọc về chương trình con END, nhưng nó chỉ thực hiện nếu tập lệnh kết thúc bình thường. Tuy nhiên, tôi muốn mã được thực hiện cũng nếu, ví dụ, người dùng hủy bỏ chương trình bằng^C.

Trả lời

7

Trap các tín hiệu chấm dứt và tái định tuyến họ để một cái gì đó, đơn giản nhất sẽ là:

$SIG{TERM} = $SIG{INT} = $SIG{QUIT} = $SIG{HUP} = sub { die; }; 
+1

Cảm ơn bạn, điều này làm việc. Chỉ có tôi nhận được rằng chương trình con được chỉ định thực hiện ba lần sau^C tín hiệu ... –

+3

@ Vì vậy, bây giờ bạn biết rằng tín hiệu^C là 3 tín hiệu khác nhau;) có thể bạn chỉ muốn sử dụng một tín hiệu, như 'QUIT' hoặc 'TERM' hoặc' INT'. chỉ định tuyến lại một trong số đó. – gaussblurinc

+2

Hoặc bạn có thể có 'phụ' nhớ rằng nó đã được gọi. Từ khóa ['state'] (http://perldoc.perl.org/functions/state.html) có thể tốt cho điều đó. – simbabque

Các vấn đề liên quan