aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/sysdep.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/sysdep.c b/src/sysdep.c
index 2b7a029b5ba..73b7fb70a99 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -1105,24 +1105,27 @@ unrequest_sigio ()
1105 the tty's pgroup just like any other terminal setting. If 1105 the tty's pgroup just like any other terminal setting. If
1106 inherited_group was not the tty's pgroup, then we'll get a 1106 inherited_group was not the tty's pgroup, then we'll get a
1107 SIGTTmumble when we try to change the tty's pgroup, and a CONT if 1107 SIGTTmumble when we try to change the tty's pgroup, and a CONT if
1108 it goes foreground in the future, which is what should happen. */ 1108 it goes foreground in the future, which is what should happen.
1109
1110 This variable is initialized in emacs.c. */
1109int inherited_pgroup; 1111int inherited_pgroup;
1110 1112
1111/* Split off the foreground process group to Emacs alone. 1113/* Split off the foreground process group to Emacs alone. When we are
1112 When we are in the foreground, but not started in our own process 1114 in the foreground, but not started in our own process group,
1113 group, redirect the TTY to point to our own process group. We need 1115 redirect the tty device handle FD to point to our own process
1114 to be in our own process group to receive SIGIO properly. */ 1116 group. We need to be in our own process group to receive SIGIO
1117 properly. */
1115void 1118void
1116narrow_foreground_group (int fd) 1119narrow_foreground_group (int fd)
1117{ 1120{
1118 int me = getpid (); 1121 int me = getpid ();
1119 1122
1123 setpgrp (0, inherited_pgroup);
1120 if (! inherited_pgroup) 1124 if (! inherited_pgroup)
1121 inherited_pgroup = getpgid (0); 1125 abort (); /* Should not happen. */
1122 /* XXX This only works on the controlling tty. */
1123 if (inherited_pgroup != me) 1126 if (inherited_pgroup != me)
1124 EMACS_SET_TTY_PGRP (fd, &me); 1127 EMACS_SET_TTY_PGRP (fd, &me); /* XXX This only works on the controlling tty. */
1125 setpgid (0, me); 1128 setpgrp (0, me);
1126} 1129}
1127 1130
1128/* Set the tty to our original foreground group. */ 1131/* Set the tty to our original foreground group. */
@@ -1131,7 +1134,7 @@ widen_foreground_group (int fd)
1131{ 1134{
1132 if (inherited_pgroup != getpid ()) 1135 if (inherited_pgroup != getpid ())
1133 EMACS_SET_TTY_PGRP (fd, &inherited_pgroup); 1136 EMACS_SET_TTY_PGRP (fd, &inherited_pgroup);
1134 setpgid (0, inherited_pgroup); 1137 setpgrp (0, inherited_pgroup);
1135} 1138}
1136 1139
1137#endif /* BSD_PGRPS */ 1140#endif /* BSD_PGRPS */