| IPC-Signal documentation | Contained in the IPC-Signal distribution. |
IPC::Signal - Utility functions dealing with signals
$number = sig_num $name;
$name = sig_name $number;
sig_translate_setup;
$number = $Sig_num{$name};
$name = $Sig_name[$number];
This module contains utility functions for dealing with signals.
Nothing is exported by default.
Returns the signal number of the signal whose name (sans SIG) is
chopped-signal-name, or undef if there is no such signal.
This function is prototyped to take a single scalar argument.
Returns the chopped signal name (like HUP) of signal number
signal-number, or undef if there is no such signal.
This function is prototyped to take a single scalar argument.
If you want to use the @Sig_name and %Sig_num variables directly you must call sig_translate_setup to initialize them. This isn't necessary if you only use the function interfaces sig_name() and sig_num().
This function is prototyped to take no arguments.
A hash with chopped signal name keys (like HUP) and integer signal
number values.
An array mapping signal numbers to chopped signal names (like HUP).
Roderick Schertler <roderick@argon.org>
perl(1).
| IPC-Signal documentation | Contained in the IPC-Signal distribution. |
# $Id: Signal.pm,v 1.4 1998-10-27 16:16:13-05 roderick Exp $ # # Copyright (c) 1997 Roderick Schertler. All rights reserved. This # program is free software; you can redistribute it and/or modify it # under the same terms as Perl itself. package IPC::Signal; use 5.003_94; # __PACKAGE__ use strict; use vars qw($VERSION @ISA @EXPORT_OK $AUTOLOAD %Sig_num @Sig_name); require Exporter; $VERSION = '1.00'; @ISA = qw(Exporter); @EXPORT_OK = qw(sig_num sig_name sig_translate_setup %Sig_num @Sig_name); %Sig_num = (); @Sig_name = (); sub sig_num ($); sub sig_name ($); sub sig_translate_setup () { return if %Sig_num && @Sig_name; require Config; # In 5.005 the sig_num entries are comma separated and there's a # trailing 0. my $num = $Config::Config{'sig_num'}; if ($num =~ s/,//g) { $num =~ s/\s+0$//; } my @name = split ' ', $Config::Config{'sig_name'}; my @num = split ' ', $num; @name or die 'No signals defined'; @name == @num or die 'Signal name/number mismatch'; @Sig_num{@name} = @num; keys %Sig_num == @name or die 'Duplicate signal names present'; for (@name) { $Sig_name[$Sig_num{$_}] = $_ unless defined $Sig_name[$Sig_num{$_}]; } } # This autoload routine just is just for sig_num() and sig_name(). It # calls sig_translate_setup() and then snaps the real function definitions # into place. sub AUTOLOAD { if ($AUTOLOAD ne __PACKAGE__ . '::sig_num' && $AUTOLOAD ne __PACKAGE__ . '::sig_name') { require Carp; Carp::croak("Undefined subroutine &$AUTOLOAD called"); } sig_translate_setup; *sig_num = sub ($) { $Sig_num{$_[0]} }; *sig_name = sub ($) { $Sig_name[$_[0]] }; goto &$AUTOLOAD; } 1 __END__