From: simon Date: Fri, 17 Dec 2004 09:43:09 +0000 (+0000) Subject: Apparently SIGCHLD is blocked by default in processes run in a X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/commitdiff_plain/3be6dd89bbedcbfb9cfbf9d4d022d6c412e51029 Apparently SIGCHLD is blocked by default in processes run in a pterm, which was breaking my bash job notification patch. This is apparently not the case for xterm, so I've fiddled with it. Not entirely sure _why_ it did this in the first place, but there we go. git-svn-id: svn://svn.tartarus.org/sgt/putty@4997 cda61777-01e9-0310-a592-d414129be87e --- diff --git a/unix/pty.c b/unix/pty.c index 50b548ce..b9bd510b 100644 --- a/unix/pty.c +++ b/unix/pty.c @@ -621,10 +621,18 @@ static const char *pty_init(void *frontend, void **backend_handle, Config *cfg, /* * SIGINT and SIGQUIT may have been set to ignored by our * parent, particularly by things like sh -c 'pterm &' and - * some window managers. Reverse this for our child process. + * some window managers. SIGCHLD, meanwhile, has been + * tinkered with by the watchdog process. Reverse all this + * for our child process. */ putty_signal(SIGINT, SIG_DFL); putty_signal(SIGQUIT, SIG_DFL); + { + sigset_t set; + sigemptyset(&set); + sigaddset(&set, SIGCHLD); + sigprocmask(SIG_UNBLOCK, &set, NULL); + } if (pty_argv) execvp(pty_argv[0], pty_argv); else {