From 13620274aedeadaed89e67d7799d16ee2bcec663 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 12 May 2005 09:24:56 +0000 Subject: (main): nohup now closes stdin if it is a terminal, unless POSIXLY_CORRECT is set. --- src/nohup.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/nohup.c') diff --git a/src/nohup.c b/src/nohup.c index 45e632661..d0c2c85c0 100644 --- a/src/nohup.c +++ b/src/nohup.c @@ -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 -- cgit v1.2.3