summaryrefslogtreecommitdiff
path: root/usr/src/cmd/csh/sh.proc.c
diff options
context:
space:
mode:
authormg147109 <none@none>2006-06-15 04:45:02 -0700
committermg147109 <none@none>2006-06-15 04:45:02 -0700
commit2b51d29a0450e65005bfc1c43520e6ebb13778ce (patch)
tree35d8c8987e123865324ee9e30cdc275926225cd8 /usr/src/cmd/csh/sh.proc.c
parent1d452cf5123cb6ac0a013a4dbd4dcceeb0da314d (diff)
downloadillumos-joyent-2b51d29a0450e65005bfc1c43520e6ebb13778ce.tar.gz
6230795 C-Shell leaves process running after termination.
Diffstat (limited to 'usr/src/cmd/csh/sh.proc.c')
-rw-r--r--usr/src/cmd/csh/sh.proc.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/usr/src/cmd/csh/sh.proc.c b/usr/src/cmd/csh/sh.proc.c
index d0d043b3db..298c2e718a 100644
--- a/usr/src/cmd/csh/sh.proc.c
+++ b/usr/src/cmd/csh/sh.proc.c
@@ -1288,3 +1288,18 @@ okpcntl(void)
if (tpgrp == 0)
error("No job control in subshells");
}
+
+void
+hupforegnd(void)
+{
+ struct process *pp;
+ int omask;
+
+ omask = sigblock(sigmask(SIGCHLD));
+ for (pp = (&proclist)->p_next; pp != PNULL; pp = pp->p_next)
+ if (pp->p_pid > 0) {
+ if (pp->p_flags & PFOREGND)
+ (void) kill(pp->p_pid, SIGHUP);
+ }
+ (void) sigsetmask(omask);
+}