diff -up ksh-20080202/src/cmd/ksh93/sh/jobs.c.ttou ksh-20080202/src/cmd/ksh93/sh/jobs.c --- ksh-20080202/src/cmd/ksh93/sh/jobs.c.ttou 2008-01-04 22:08:52.000000000 +0100 +++ ksh-20080202/src/cmd/ksh93/sh/jobs.c 2008-12-02 16:43:37.449816189 +0100 @@ -649,9 +649,16 @@ static void job_reset(register struct pr { /* save the terminal state for current job */ #ifdef SIGTSTP + Sig_handler_t saved_handler; + + saved_handler = signal(SIGTTOU, SIG_IGN); job_fgrp(pw,tcgetpgrp(job.fd)); if(tcsetpgrp(job.fd,job.mypid) !=0) + { + signal(SIGTTOU, saved_handler); return; + } + signal(SIGTTOU, saved_handler); #endif /* SIGTSTP */ /* force the following tty_get() to do a tcgetattr() unless fg */ if(!(pw->p_flag&P_FG))