Do not setsid() just because of --batch-mode.
authorMatt Birkholz <matt@birkholz.chandler.az.us>
Tue, 18 Dec 2012 23:56:53 +0000 (16:56 -0700)
committerMatt Birkholz <matt@birkholz.chandler.az.us>
Tue, 18 Dec 2012 23:56:53 +0000 (16:56 -0700)
Commit 6b474c5 has turned --batch-mode into something like a
--background option, ensuring that setsid() is called.  Re-worked the
logic so that tty interrupt characters are not frobbed in batch-mode
AND setsid() is not called (except according to the curious but
ancient heuristic/default: when there is no tty on stdin, stderr and
stdout and no --emacs option).

src/microcode/uxtop.c

index e8152afe08adef965bee0ba2aa7008a94b0e1584..da11c63f14c02fbd7c5f65865278b46a21e5fde1 100644 (file)
@@ -75,15 +75,11 @@ OS_initialize (void)
 {
   initialize_interruptable_extent ();
   {
-    if (option_force_interactive)
-      interactive = true;
-    else if (option_batch_mode)
-      interactive = false;
-    else
-      interactive
-       = ((isatty (STDIN_FILENO))
-          || (isatty (STDOUT_FILENO))
-          || (isatty (STDERR_FILENO)));
+    interactive =
+      (option_force_interactive
+       || (isatty (STDIN_FILENO))
+       || (isatty (STDOUT_FILENO))
+       || (isatty (STDERR_FILENO)));
     /* If none of the stdio streams is a terminal, disassociate us
        from the controlling terminal so that we're not affected by
        keyboard interrupts or hangup signals.  However, if we're
@@ -91,6 +87,8 @@ OS_initialize (void)
        to receive a hangup signal if Emacs dies. */
     if ((!interactive) && (!option_emacs_subprocess))
       UX_setsid ();
+    if (option_batch_mode)
+      interactive = false;
     /* The argument passed to `UX_ctty_initialize' says whether to
        permit interrupt control, i.e. whether to attempt to setup the
        keyboard interrupt characters. */