handle SIGPIPE and improve USR1 and USR2
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@2242 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
20
C/sysbits.c
20
C/sysbits.c
@@ -1492,19 +1492,25 @@ ReceiveSignal (int s)
|
||||
case SIGKILL:
|
||||
Yap_Error(INTERRUPT_ERROR,MkIntTerm(s),NULL);
|
||||
#endif
|
||||
#if defined(SIGUSR1)
|
||||
#ifdef SIGUSR1
|
||||
case SIGUSR1:
|
||||
/* force the system to creep */
|
||||
Yap_signal (YAP_USR1_SIGNAL);
|
||||
break;
|
||||
#endif /* defined(SIGUSR1) */
|
||||
#if defined(SIGUSR2)
|
||||
#ifdef SIGUSR2
|
||||
case SIGUSR2:
|
||||
/* force the system to creep */
|
||||
Yap_signal (YAP_USR2_SIGNAL);
|
||||
break;
|
||||
#endif /* defined(SIGUSR2) */
|
||||
#if defined(SIGHUP)
|
||||
#ifdef SIGPIPE
|
||||
case SIGPIPE:
|
||||
/* force the system to creep */
|
||||
Yap_signal (YAP_PIPE_SIGNAL);
|
||||
break;
|
||||
#endif /* defined(SIGPIPE) */
|
||||
#ifdef SIGHUP
|
||||
case SIGHUP:
|
||||
/* force the system to creep */
|
||||
Yap_signal (YAP_HUP_SIGNAL);
|
||||
@@ -1545,6 +1551,9 @@ InitSignals (void)
|
||||
my_signal (SIGHUP, ReceiveSignal);
|
||||
my_signal (SIGALRM, HandleALRM);
|
||||
#endif
|
||||
#ifdef SIGPIPE
|
||||
my_signal (SIGPIPE, ReceiveSignal);
|
||||
#endif
|
||||
#if _MSC_VER || defined(__MINGW32__)
|
||||
signal (SIGINT, SIG_IGN);
|
||||
SetConsoleCtrlHandler(MSCHandleSignal,TRUE);
|
||||
@@ -2543,6 +2552,11 @@ p_first_signal(void)
|
||||
UNLOCK(SignalLock);
|
||||
return Yap_unify(ARG1, MkAtomTerm(Yap_LookupAtom("sig_usr1")));
|
||||
}
|
||||
if (ActiveSignals & YAP_PIPE_SIGNAL) {
|
||||
ActiveSignals &= ~YAP_PIPE_SIGNAL;
|
||||
UNLOCK(SignalLock);
|
||||
return Yap_unify(ARG1, MkAtomTerm(Yap_LookupAtom("sig_pipe")));
|
||||
}
|
||||
if (ActiveSignals & YAP_HUP_SIGNAL) {
|
||||
ActiveSignals &= ~YAP_HUP_SIGNAL;
|
||||
UNLOCK(SignalLock);
|
||||
|
Reference in New Issue
Block a user