Attempt to HUP processes associated with the pty when it is revoked if
authorSam Hartman <hartmans@mit.edu>
Thu, 3 Aug 1995 19:26:56 +0000 (19:26 +0000)
committerSam Hartman <hartmans@mit.edu>
Thu, 3 Aug 1995 19:26:56 +0000 (19:26 +0000)
vhangup is not available.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@6402 dc483132-0cff-0310-8789-dd5450dbe970

src/util/pty/ChangeLog
src/util/pty/cleanup.c
src/util/pty/configure.in

index 0a4c2cf9f284b8d9978aa519143bbfc910d0b656..a8aa1cbef39c6e28e7bff16d03576640bae09e42 100644 (file)
@@ -1,3 +1,11 @@
+Thu Aug  3 15:04:34 1995  Sam Hartman  <hartmans@tertius.mit.edu>
+
+       * configure.in: Check for vhangup and killpg.
+
+       * cleanup.c (pty_cleanup): Kill the process group associated with
+        the pty if using revoke.  This won't always work, but will at
+        least attempt to remove processes associated with the pty.
+
 Wed Aug  2 11:59:19 1995  Sam Hartman  <hartmans@tertius.mit.edu>
 
        * init.c (pty_init): New file to handle initialization--currently only error tables.
index d9103a472cbb6c137a064dee3a5204d779e89c73..c5726bd6f9150e85747710d49333e17e61a18b71 100644 (file)
@@ -45,6 +45,22 @@ long pty_cleanup (slave, pid, update_utmp)
 #endif
 #ifdef HAVE_REVOKE
     revoke(slave);
+    /*
+     * Revoke isn't guaranteed to send a SIGHUP to the processes it
+     * dissociates from the terminal.  The best solution without a Posix
+     * mechanism for forcing a hangup is to killpg() the process
+     * group of the pty.  This will at least kill the shell and
+     * hopefully, the child processes.  This is not always the case, however.
+     * If the shell puts each job in a process group and doesn't pass
+     * along SIGHUP, all processes may not die.
+     */
+    if ( pid > 0 ) {
+    #ifdef HAVE_KILLPG
+       killpg(pid, SIGHUP);
+       #else
+       kill( -(pid), SIGHUP );
+#endif /*HAVE_KILLPG*/
+    }
 #else /* HAVE_REVOKE*/
     #ifdef VHANG_LAST
     if ( retval = ( pty_open_ctty( slave, &fd ))) 
index 572fc13b5c6f25761e0ae5e9622b319bcb25f535..76a611652936355c3f69e37d237f5f4a49c579d9 100644 (file)
@@ -6,7 +6,7 @@ LinkFileDir([$](TOPLIBD)/libpty.a,libpty.a,../util/pty)
 AC_PROG_INSTALL
 AC_PROG_ARCHIVE
 AC_PROG_RANLIB
-AC_CHECK_FUNCS(fchmod fchown revoke)
+AC_CHECK_FUNCS(fchmod fchown revoke vhangup killpg)
 dnl dbm libs for use of an_to_ln
 LOGINLIBS=
 dnl