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