* dcrt0.cc (do_exit): Don't bother looking for pgrp children to send SIGHUP if
process has never created any children. * fork.cc (fork): Set flag indicating that there is another process with our process group. * spawn.cc (spawn_guts): Ditto. * pinfo.h (set_has_pgid_children): New methods for setting when process has children in its process group. * syscalls.cc (setpgid): Clear has_gid_children if pgid changes.
This commit is contained in:
@@ -1024,7 +1024,7 @@ do_exit (int status)
|
||||
set_console_title (old_title);
|
||||
|
||||
/* Kill orphaned children on group leader exit */
|
||||
if (myself->pid == myself->pgid)
|
||||
if (myself->has_pgid_children && myself->pid == myself->pgid)
|
||||
{
|
||||
system_printf ("%d == pgrp %d, send SIG{HUP,CONT} to stopped children",
|
||||
myself->pid, myself->pgid);
|
||||
@@ -1041,7 +1041,7 @@ do_exit (int status)
|
||||
myself->pid, myself->sid);
|
||||
|
||||
if (tp->getsid () == myself->sid)
|
||||
kill (-tp->getpgid (), SIGHUP);
|
||||
kill_pgrp (tp->getpgid (), SIGHUP);
|
||||
}
|
||||
|
||||
tty_terminate ();
|
||||
|
Reference in New Issue
Block a user