server: Cope with stdio file descriptors being closed on startup.

This commit is contained in:
Alexandre Julliard 2011-11-15 11:39:42 +01:00
parent 1ff5f3d56f
commit 3acc2068a0
1 changed files with 7 additions and 6 deletions

View File

@ -758,6 +758,10 @@ void open_master_socket(void)
assert( sizeof(union generic_request) == sizeof(struct request_max_size) ); assert( sizeof(union generic_request) == sizeof(struct request_max_size) );
assert( sizeof(union generic_reply) == sizeof(struct request_max_size) ); assert( sizeof(union generic_reply) == sizeof(struct request_max_size) );
/* make sure the stdio fds are open */
fd = open( "/dev/null", O_RDWR );
while (fd >= 0 && fd <= 2) fd = dup( fd );
if (!server_dir) fatal_error( "directory %s cannot be accessed\n", config_dir ); if (!server_dir) fatal_error( "directory %s cannot be accessed\n", config_dir );
if (chdir( config_dir ) == -1) fatal_perror( "chdir to %s", config_dir ); if (chdir( config_dir ) == -1) fatal_perror( "chdir to %s", config_dir );
if ((config_dir_fd = open( ".", O_RDONLY )) == -1) fatal_perror( "open %s", config_dir ); if ((config_dir_fd = open( ".", O_RDONLY )) == -1) fatal_perror( "open %s", config_dir );
@ -777,12 +781,8 @@ void open_master_socket(void)
acquire_lock(); acquire_lock();
/* close stdin and stdout */ /* close stdin and stdout */
if ((fd = open( "/dev/null", O_RDWR )) != -1)
{
dup2( fd, 0 ); dup2( fd, 0 );
dup2( fd, 1 ); dup2( fd, 1 );
close( fd );
}
/* signal parent */ /* signal parent */
dummy = 0; dummy = 0;
@ -813,6 +813,7 @@ void open_master_socket(void)
/* init the process tracing mechanism */ /* init the process tracing mechanism */
init_tracing_mechanism(); init_tracing_mechanism();
close( fd );
} }
/* master socket timer expiration handler */ /* master socket timer expiration handler */