- /* If we get started under a job aware app (like bash
- * for example), make sure we are now in charge so we
- * don't fight over who gets the foreground */
- /* don't pay any attention to this signal; it just confuses
- things and isn't really meant for shells anyway */
- setpgrp();
- controlling_tty(0);
+ static pid_t shell_pgrp;
+ /* Loop until we are in the foreground. */
+ while (tcgetpgrp (shell_terminal) != (shell_pgrp = getpgrp ()))
+ kill (- shell_pgrp, SIGTTIN);
+
+ /* Ignore interactive and job-control signals. */
+ signal(SIGINT, SIG_IGN);
+ signal(SIGQUIT, SIG_IGN);
+ signal(SIGTSTP, SIG_IGN);
+ signal(SIGTTIN, SIG_IGN);