Perl Cd Bookshelf [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Perl Cd Bookshelf [Electronic resources] - نسخه متنی

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید



16.22. Turning Signals into Fatal Errors


16.22.1. Problem




END blocks aren't run when your
program dies from an uncaught signal. Your program gets such signals,
and you'd like your END blocks to have a chance to clean up.

16.22.2. Solution


Use the sigtrap pragma:

use sigtrap qw(die untrapped normal-signals);

16.22.3. Discussion


Untrapped signals cause your program to die without running END
blocks. Although you could manually install signal handlers that call
die, this becomes tedious for a lot of signals:

$SIG{INT} = $SIG{HUP} = $SIG{PIPE} = $SIG{TERM} = sub { die };

The sigtrap pragma provides a convenient shorthand
for installing such handlers:

use sigtrap qw(die untrapped normal-signals);

The die import tells sigtrap to
call die (you can also import
stack-trace to install handlers that trigger stack
traces). The untrapped import tells
sigtrap to install handlers only for signals that
don't already have them, so if you handle SIGPIPE
yourself, sigtrap won't replace your handler.

normal-signals is one of several imports that
specify predefined lists of useful signals to trap. The signal lists
are given in
Table 16-2.

Table 16-2. Signal lists



















List


Signals


normal-signals


HUP, INT,
PIPE, TERM


error-signals


ABRT, BUS,
EMT, FPE,
ILL, QUIT,
SEGV, SYS,
TRAP


old-interface-signals


ABRT, BUS,
EMT, FPE,
ILL, PIPE,
QUIT, SEGV,
SYS, TERM,
TRAP

You can combine signal lists:

use sigtrap qw(die untrapped normal-signals error-signals);

You can even combine different handler types in one import list. Here
we use untrapped to specify only the normal
signals for which there is not already a handler installed, then use
any to revert to sigtrap's
default behavior of installing handlers for all signals in the named
list:

use sigtrap qw(
die untrapped normal-signals
stack-trace any error-signals
);

16.22.4. See Also


Recipe 12.7; the documentation for the
standard module sigtrap; Recipe 16.15



16.21. Timing Out an Operation16.23. Program: sigrand




Copyright © 2003 O'Reilly & Associates. All rights reserved.

/ 875