Apparently SIGCHLD is blocked by default in processes run in a
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 17 Dec 2004 09:43:09 +0000 (09:43 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 17 Dec 2004 09:43:09 +0000 (09:43 +0000)
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

unix/pty.c

index 50b548c..b9bd510 100644 (file)
@@ -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 {