]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
(main): nohup now closes stdin if it is a terminal, unless
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 12 May 2005 09:24:56 +0000 (09:24 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 12 May 2005 09:24:56 +0000 (09:24 +0000)
POSIXLY_CORRECT is set.

src/nohup.c

index 45e6326617c26a2eb7e150dbae573d1a291dc397..d0c2c85c0046db790163daf07d5a9b21d07dabc5 100644 (file)
@@ -96,6 +96,12 @@ main (int argc, char **argv)
       usage (NOHUP_FAILURE);
     }
 
+  /* If standard input is a tty, close it.  POSIX requires nohup to
+     leave standard input alone, but that's less useful in practice as
+     it causes a "nohup foo & exit" session to hang with OpenSSH.  */
+  if (!getenv ("POSIXLY_CORRECT") && isatty (STDIN_FILENO))
+    close (STDIN_FILENO);
+
   /* If standard output is a tty, redirect it (appending) to a file.
      First try nohup.out, then $HOME/nohup.out.  */
   if (isatty (STDOUT_FILENO))
@@ -139,7 +145,7 @@ main (int argc, char **argv)
       free (in_home);
     }
 
-  /* If stderr is on a tty, redirect it to stdout.  */
+  /* If standard error is a tty, redirect it to stdout.  */
   if (isatty (STDERR_FILENO))
     {
       /* Save a copy of stderr before redirecting, so we can use the original