Date: Thu, 5 Feb 1998 20:43:20 +0100 From: Martin Cracauer <cracauer@cons.org> To: cvs-commiters@FreeBSD.ORG Cc: cracauer@cons.org Subject: Re: Please review fix for /bin/sh SIGQUIT/SIGINT problem Message-ID: <19980205204320.31887@cons.org> In-Reply-To: <19980205202824.51394@cons.org>; from Martin Cracauer on Thu, Feb 05, 1998 at 08:28:24PM %2B0100 References: <19980205202824.51394@cons.org>
next in thread | previous in thread | raw e-mail | index | archive | help
I found another case that needs to be taken into account.
The fix appended also works right for
#/bin/sh
somebackgroundjobs &
while `true` ; do foo=1 ; done
Martin
diff -r -c sh.original/jobs.c sh/jobs.c
*** sh.original/jobs.c Mon Mar 10 10:53:43 1997
--- sh/jobs.c Thu Feb 5 20:37:11 1998
***************
*** 553,558 ****
--- 553,562 ----
TRACE(("forkshell(%%%d, 0x%lx, %d) called\n", jp - jobtab, (long)n,
mode));
INTOFF;
+ if (mode == FORK_FG) {
+ signal(SIGQUIT,SIG_IGN);
+ signal(SIGINT,SIG_IGN);
+ }
pid = fork();
if (pid == -1) {
TRACE(("Fork failed, errno=%d\n", errno));
***************
*** 565,570 ****
--- 569,576 ----
int i;
TRACE(("Child shell %d\n", getpid()));
+ signal(SIGQUIT,SIG_DFL);
+ signal(SIGINT,SIG_DFL);
wasroot = rootshell;
rootshell = 0;
for (i = njobs, p = jobtab ; --i >= 0 ; p++)
***************
*** 674,679 ****
--- 680,688 ----
while (jp->state == 0) {
dowait(1, jp);
}
+ signal(SIGQUIT,SIG_DFL);
+ signal(SIGINT,SIG_DFL);
+
#if JOBS
if (jp->jobctl) {
if (ioctl(2, TIOCSPGRP, (char *)&mypgrp) < 0)
--
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Martin Cracauer <cracauer@cons.org> http://www.cons.org/cracauer
cracauer@wavehh.hanse.de (batched, preferred for large mails)
Tel.: (daytime) +4940 41478712 Fax.: (daytime) +4940 41478715
Tel.: (private) +4940 5221829 Fax.: (private) +4940 5228536
Paper: (private) Waldstrasse 200, 22846 Norderstedt, Germany
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19980205204320.31887>
