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. When 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