please help me solve another prob i am facing.

i have 2 scripts --> a.pl and b.pl
both scripts have a paramter called -logfile.
if this is specified,  the STDOUT and STDERR are redirected to this.

now,  I call b.pl from within a.pl
using system().

the documentation for system() says that the STDOUT,  STDERR of the new
process are inherited from the parent process.
so, I expect that if I do not specify -logfile for b.pl but specify -logfile
for a.pl,  then the output for b.pl should also go to the logfile for a.pl
but the output of b.pl is lost.

if I do not specify the logfile for either script,  then everything comes
out fine on STDOUT.

I am pasting the progs below :

Thanks,
Ashish

#=======================
# a.pl
#=======================

use Getopt::Long ;

@cl = @ARGV ;  # preserve for printing 
GetOptions (   
                "logfile=s"     => \$logfile
           );

# if logfile defined, set it up.
if (defined ($logfile)) {
        open (LOGFILE, ">>$logfile") or ERR_HANDLER
("main:LogFile:Cannot_Open") ;
        open (STDOUT ,  ">&LOGFILE");    # redefine STDOUT and STDERR to
point to LOGFILE
        open (STDERR ,  ">&LOGFILE");
        $| = 1 ;                         # better if logs are updated
instantly
}

print ("$0 :: Starting ...\n") ;
print ("CommandLine : @cl\n") ;
print ("calling b.pl ...\n\n");
system ("b.pl") ;
print ("$0 :: Finished ...\n") ;

#====================
# b.pl
#====================

use Getopt::Long ;

@cl = @ARGV ;  # preserve for printing 
GetOptions (    
                "logfile=s"     => \$logfile
           );

# if logfile defined, set it up.
if (defined ($logfile)) {
        open (LOGFILE, ">>$logfile") or ERR_HANDLER
("main:LogFile:Cannot_Open") ;
        open (STDOUT ,  ">&LOGFILE");    # redefine STDOUT and STDERR to
point to LOGFILE
        open (STDERR ,  ">&LOGFILE");
        $| = 1 ;                         # better if logs are updated
instantly
}

print ("$0 :: Starting ...\n") ;
print ("CommandLine : @cl\n") ;
print ("$0 :: Finished ...\n") ;







*********************************************************************** 
This communication is confidential and is intended only for the person 
to whom it is addressed.  If you are not that person, you are not 
permitted to make use of the information and you are requested to 
notify administrator [EMAIL PROTECTED] immediately that 
you have received it and then destroy/erase the copy/e-mail in your 
possession. 
*********************************************************************** 



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to