I have a process which when
executed as below:
process_name > file.txt
will redirect all the output to file.txt and also to the console.
when executed like this
process_name >& file.txt&
will redirect the output to file.txt but will not print the output to console returning the pid on the console.
Now i want to execute the second way of running the process inside a perl script! how could i do this? currently i am usng the below method:
#!/usr/bin/perl
use strict;
use warnings;
my $res = `bsm_adjust_controller -F -ra -d 'subnetwork=NETSim_STD/bsc=0005' -f /tmp/31102012/Task_31102012_1421_0005.log >& /tmp/31102012/Ctrl_31102012_1421_0005.log&`;
print $res;
when i run the script it gives:
./temp.pl
sh: /tmp/31102012/Ctrl_31102012_1421_0005.log: bad number
I also tried the below method:
#!/usr/bin/perl
use strict;
use warnings;
my $res = "bsm_adjust_controller -F -ra -d 'subnetwork=NETSim_STD/bsc=0005' -f /tmp/31102012/Task_31102012_1421_0005.log >& /tmp/31102012/Ctrl_31102012_1421_0005.log&";
open(CMD, '-|', $res) || die "couldn't run $res: $!\n";
Even the above script throws the same error. the purpose is to execute the process in background and continue with the next statements without caring what happened to the process and also i donot need the output of the process being run inside to console.
could anybody please help?