--- src/cmd/ksh93/data/signals.c +++ src/cmd/ksh93/data/signals.c 2012-02-06 11:16:53.970131637 +0100 @@ -18,6 +18,9 @@ * * ***********************************************************************/ #include "defs.h" +#include +#include + #if defined(SIGCLD) && !defined(SIGCHLD) # define SIGCHLD SIGCLD --- src/cmd/ksh93/sh/xec.c +++ src/cmd/ksh93/sh/xec.c 2007-12-21 13:28:04.000000000 +0100 @@ -2894,6 +2894,7 @@ static pid_t sh_ntfork(Shell_t *shp,cons { signal(SIGTTIN,SIG_DFL); signal(SIGTTOU,SIG_DFL); + signal(SIGTSTP,SIG_DFL); } #endif /* SIGTSTP */ #ifdef JOBS @@ -2931,6 +2932,9 @@ static pid_t sh_ntfork(Shell_t *shp,cons { signal(SIGTTIN,SIG_IGN); signal(SIGTTOU,SIG_IGN); + if(sh_isstate(SH_INTERACTIVE)) + signal(SIGTSTP,SIG_IGN); + else signal(SIGTSTP,SIG_DFL); } #endif /* SIGTSTP */ if(spawnpid>0) @@ -3011,6 +3015,7 @@ static pid_t sh_ntfork(Shell_t *shp,cons { signal(SIGTTIN,SIG_DFL); signal(SIGTTOU,SIG_DFL); + signal(SIGTSTP,SIG_DFL); jobwasset++; } #endif /* SIGTSTP */ @@ -3069,6 +3074,9 @@ static pid_t sh_ntfork(Shell_t *shp,cons { signal(SIGTTIN,SIG_IGN); signal(SIGTTOU,SIG_IGN); + if(sh_isstate(SH_INTERACTIVE)) + signal(SIGTSTP,SIG_IGN); + else signal(SIGTSTP,SIG_DFL); } #endif /* SIGTSTP */ if(sigwasset)