mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-23 16:19:35 -05:00
All close and redirect stdin, stdout, stderr.
This commit is contained in:
parent
0426431639
commit
10a6e51521
1 changed files with 21 additions and 21 deletions
|
|
@ -72,32 +72,32 @@ lutil_detach( int debug, int do_close )
|
|||
break;
|
||||
}
|
||||
|
||||
if ( (sd = open( "/dev/null", O_RDWR )) != -1 ) {
|
||||
perror("/dev/null");
|
||||
}
|
||||
|
||||
/* 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( sd );
|
||||
|
||||
if ( do_close ) {
|
||||
if ( (sd = open( "/dev/null", O_RDWR )) != -1 ) {
|
||||
perror("/dev/null");
|
||||
}
|
||||
|
||||
/* close everything else */
|
||||
for ( i = 0; i < nbits; i++ ) {
|
||||
if( i == sd ) continue;
|
||||
|
||||
close( i );
|
||||
|
||||
if( i == STDIN_FILENO ||
|
||||
i == STDOUT_FILENO ||
|
||||
i == STDERR_FILENO )
|
||||
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( "/" );
|
||||
|
|
|
|||
Loading…
Reference in a new issue