X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=unix%2Fpty.c;h=b9bd510b1f83326caecba322f005f66240d87fc2;hb=ebf507497dc5eb97e825084f7fbf756f2283d496;hp=b621d8be0d0ae9787306c097255fd24410094fb8;hpb=1aa64afc30a3c002d391acfac9aeebbaa709f8d6;p=PuTTY.git diff --git a/unix/pty.c b/unix/pty.c index b621d8be..b9bd510b 100644 --- a/unix/pty.c +++ b/unix/pty.c @@ -474,6 +474,8 @@ int pty_select_result(int fd, int event) #endif from_backend(pty_frontend, 0, message, strlen(message)); } + + notify_remote_exit(pty_frontend); } return !finished; } @@ -619,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 {