diff options
author | Christopher Faylor <me@cgf.cx> | 2002-01-19 23:57:45 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-01-19 23:57:45 +0000 |
commit | 9e73b3397b6f566ccfde90593dc779026b022e70 (patch) | |
tree | 48aaed9fbf2bc43c430258080d44c84c278a8bc4 /winsup/cygwin/exceptions.cc | |
parent | 5946622e722a2b6b1eaed9920a1b8cdd7aab2983 (diff) | |
download | newlib-9e73b3397b6f566ccfde90593dc779026b022e70.zip newlib-9e73b3397b6f566ccfde90593dc779026b022e70.tar.gz newlib-9e73b3397b6f566ccfde90593dc779026b022e70.tar.bz2 |
* exceptions.cc (sig_handle_tty_stop): Don't send SIGCHLD if parent doesn't
want it.
(sig_handle): Don't check for SA_NOCLDSTOP here. We don't have enough
information.
Diffstat (limited to 'winsup/cygwin/exceptions.cc')
-rw-r--r-- | winsup/cygwin/exceptions.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index cb4de7a..b608e13 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -600,6 +600,7 @@ sig_handle_tty_stop (int sig) myself->process_state &= ~PID_STOPPED; return; } + myself->stopsig = sig; /* See if we have a living parent. If so, send it a special signal. * It will figure out exactly which pid has stopped by scanning @@ -608,7 +609,8 @@ sig_handle_tty_stop (int sig) if (my_parent_is_alive ()) { pinfo parent (myself->ppid); - sig_send (parent, SIGCHLD); + if (!(parent->getsig (SIGCHLD).sa_flags & SA_NOCLDSTOP)) + sig_send (parent, SIGCHLD); } sigproc_printf ("process %d stopped by signal %d, myself->ppid_handle %p", myself->pid, sig, myself->ppid_handle); @@ -1032,7 +1034,7 @@ sig_handle (int sig, bool thisproc) if (handler == (void *) SIG_ERR) goto exit_sig; - if ((sig == SIGCHLD) && (thissig.sa_flags & SA_NOCLDSTOP)) + if (sig == SIGCHLD) goto done; goto dosig; |