in reply to question about running a system and a perl function background

If you have to "go to a system call", you could do a simple way like below for each (by the way there's no error checking in there at all) - but it's highly dependent I would say on what process you'll be running out there and on its particular ways of possibly failing, that will more determine what you'd write.
use strict; my $joboutputfile = "/tmp/joboutputfile.out"; my $stuff; #run job qx!ls -al /var > $joboutputfile!; ( -e $joboutputfile ) && &checkerror; print $stuff; sub checkerror { return $stuff = qx!grep "spool" $joboutputfile!; }

  • Comment on Re: question about running a system and a perl function background
  • Download Code

Replies are listed 'Best First'.
Re^2: question about running a system and a perl function background
by Anonymous Monk on Dec 03, 2004 at 17:45 UTC
    In the above code, if the output file exists, then the checkerror function is called. But, is there a way I know when the process had been completed?

    This is because I need to wait for all four processes to finish before starting another 4 more simulataneously. And everytime I run 4 processes, they dump their output to the same files everytime.

    So,

    system 1, ("some process 1 > output1.txt"); system 1, ("some process 2 > output2.txt"); system 1, ("some process 3 > output3.txt"); system 1, ("some process 4 > output4.txt"); Then when I know each is completed, I check for error in those files: +If process 1 is completed, I'll check for error in output1.txt etc. W +hen all are completed, I call next set of 4 processes system 1, ("some process 5 > output1.txt"); system 1, ("some process 6 > output2.txt"); system 1, ("some process 7 > output3.txt"); system 1, ("some process 8 > output4.txt"); As seen above, the output files remain the same
    Thanks.