libposix: fix SIGCLD disposition; use PosixSIGCHLD to identify the signal when SIGCHLD == SIGCLD
This commit is contained in:
parent
c45cffeaf5
commit
6bd285bdaa
|
@ -212,12 +212,15 @@ execute_disposition(int sig, PosixSignalDisposition action)
|
||||||
static PosixSignalDisposition
|
static PosixSignalDisposition
|
||||||
default_signal_disposition(int code)
|
default_signal_disposition(int code)
|
||||||
{
|
{
|
||||||
|
PosixSignals signal;
|
||||||
|
|
||||||
// see http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/signal.h.html
|
// see http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/signal.h.html
|
||||||
if(__sigrtmin != 0 && __sigrtmax != 0
|
if(__sigrtmin != 0 && __sigrtmax != 0
|
||||||
&&(code >= __sigrtmin || code <= __sigrtmax))
|
&&(code >= __sigrtmin || code <= __sigrtmax))
|
||||||
return TerminateTheProcess;
|
return TerminateTheProcess;
|
||||||
|
|
||||||
switch(__code_to_signal_map[code]){
|
signal = __code_to_signal_map[code];
|
||||||
|
switch(signal){
|
||||||
default:
|
default:
|
||||||
sysfatal("libposix: undefined signal %d", code);
|
sysfatal("libposix: undefined signal %d", code);
|
||||||
|
|
||||||
|
@ -250,6 +253,7 @@ default_signal_disposition(int code)
|
||||||
case PosixSIGXFSZ:
|
case PosixSIGXFSZ:
|
||||||
return TerminateTheProcessAndCoreDump;
|
return TerminateTheProcessAndCoreDump;
|
||||||
case PosixSIGCHLD:
|
case PosixSIGCHLD:
|
||||||
|
case PosixSIGCLD:
|
||||||
case PosixSIGURG:
|
case PosixSIGURG:
|
||||||
return SignalHandled;
|
return SignalHandled;
|
||||||
case PosixSIGCONT:
|
case PosixSIGCONT:
|
||||||
|
@ -427,7 +431,10 @@ libposix_define_signal(PosixSignals signal, int code)
|
||||||
if(__libposix_initialized())
|
if(__libposix_initialized())
|
||||||
return 0;
|
return 0;
|
||||||
__signals_to_code_map[signal] = (unsigned char)code;
|
__signals_to_code_map[signal] = (unsigned char)code;
|
||||||
__code_to_signal_map[code] = (unsigned char)signal;
|
if(signal != PosixSIGCLD || code != __signals_to_code_map[PosixSIGCHLD]){
|
||||||
|
/* if SIGCHLD == SIGCLD then we use PosixSIGCHLD to identify the signal */
|
||||||
|
__code_to_signal_map[code] = (unsigned char)signal;
|
||||||
|
}
|
||||||
if(code < __min_known_sig || __min_known_sig == 0)
|
if(code < __min_known_sig || __min_known_sig == 0)
|
||||||
__min_known_sig = code;
|
__min_known_sig = code;
|
||||||
if(code > __max_known_sig || __max_known_sig == 0)
|
if(code > __max_known_sig || __max_known_sig == 0)
|
||||||
|
|
Loading…
Reference in New Issue