my $proc_id = open3("<&NULL", ">&STDOUT", ">&STDERR", @$job);
is what actually runs your program. As you can see, STDOUT and STDERR for the program are redirected to YOUR STDOUT and STDERR.
You have 2 choices (that I can see).
First, change run_parallel to redirect the output to different file handles.
Second, close STDOUT and STDERR in your main program before calling run_parallel, and reopen them to point to log files.
close(STDOUT); open STDOUT,">log.out" or die "Can't open log.out, erro
+r $!";
close(STDERR); open STDERR,">log.err" or die; # can't really print a m
+essage, STDERR is closed
Hope this helps!
Oh, by the way, since all of these jobs are writing to the same file, there's always the chance you could get some kind of simultaneous writes which could mess you up. You might want to consider modifying run_parallel so it opens up DIFFERENT log and error files for each job...
--
Mike |