From 10a6e51521f44afbca350dba6231c386212fe2c4 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Tue, 11 Jan 2000 08:04:59 +0000 Subject: [PATCH] All close and redirect stdin, stdout, stderr. --- libraries/liblutil/detach.c | 40 ++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/libraries/liblutil/detach.c b/libraries/liblutil/detach.c index c3081ef1f6..924982d635 100644 --- a/libraries/liblutil/detach.c +++ b/libraries/liblutil/detach.c @@ -72,32 +72,32 @@ lutil_detach( int debug, int do_close ) break; } - if ( do_close ) { - if ( (sd = open( "/dev/null", O_RDWR )) != -1 ) { - perror("/dev/null"); - } + if ( (sd = open( "/dev/null", O_RDWR )) != -1 ) { + perror("/dev/null"); + } - for ( i = 0; i < nbits; i++ ) { - if( i == sd ) continue; + /* close stdin, stdout, stderr */ + close( STDIN_FILENO ); + close( STDOUT_FILENO ); + close( STDERR_FILENO ); + + /* redirect stdin, stdout, stderr to /dev/null */ + dup2( sd, STDIN_FILENO ); + dup2( sd, STDOUT_FILENO ); + dup2( sd, STDERR_FILENO ); - close( i ); + close( sd ); - if( i == STDIN_FILENO || - i == STDOUT_FILENO || - i == STDERR_FILENO ) + if ( do_close ) { + /* close everything else */ + for ( i = 0; i < nbits; i++ ) { + if( i != STDIN_FILENO && + i != STDOUT_FILENO && + i != STDERR_FILENO ) { - /* attach /dev/null */ - dup2( sd, i ); + close( i ); } } - - if( sd != STDIN_FILENO && - sd != STDOUT_FILENO && - sd != STDERR_FILENO ) - { - /* unless stdin, stdout, or stderr, close /dev/null */ - close( sd ); - } } (void) chdir( "/" ); -- 2.39.5