On Thu, 26 Feb 2009, pugs-comm...@feather.perl6.nl wrote:
> +The exceptions are:
> +
> + Signal                   Action   R Comment
> + ----------------------------------------------------------------------
> + ControlExceptionSigHUP    Term    ? Hangup detected on controlling terminal 
> or death of controlling process
[...]
> + ControlExceptionSigCHLD   Ign     ? Child stopped or terminated
[...]
> + ControlExceptionSigURG    Ign     ? Urgent condition on socket (4.2BSD)
[...]
> + ControlExceptionSigWINCH  Ign     ? Window resize signal (4.3BSD, Sun)
[...]
> +XXX I'm unsure how the actions in the table above can be made to make sense. 
>  The Ign
> +actions are already dealt with because %SIG{CHLD}.exception already defaults 
> to undef.
> +The Term action will probably be self-solving (ie. will terminate the 
> process).  The
> +others I'm just plain unsure about.  XXX

That looks a lot like a mangled version of "man 7 signal" from Linux.

IMHO the default action shouldn't be specified at all by the Perl standard;
it should simply refer to the appropriate external standard.


In POSIX the settings "terminate", "ignore", "catch" and "default" have
3½ distinct meanings.  For *most* signals "default" is the same as
"terminate" (sometimes with a core), but not for all.

In particular, for SIGCHLD, if you "ignore" it, the "wait" call will
always fail (having delayed until all child processes have exited),
whereas if you leave it as "default", your process will still ignore it,
but "wait" will work properly.

On some implementations SIGUSR1 and/or SIGUSR2 are ignored by default.

Core dumps are subject to ulimit controls, even when the signal in question
would normally trigger them.

-Martin

Reply via email to