On 04/14/2012 09:35 AM, Amadeus W.M. wrote: > This is not Fedora specific, so apologies for posting it here. I used to > post this kind of questions in comp.linux.misc or the like but I don't > have access to usenet groups anymore. > > So here is the question. Suppose I have several processes that run > concurrently and each outputs stuff to stdout. Can the combined output be > intermingled? > > > Example: script ioTest.sh: > > > #!/bin/bash > > i=0 > while [ $i -lt 100 ]; > do > echo "AAAAA" & # e.g. 500 As > echo "BBBBB" & > echo "CCCCC" & > > i=$(($i+1)) > done > > > Then > > ./ioTest.sh > out > > The A's and B's and C's always seem to be in contiguous blocks of 500 in > the output file, but is that guaranteed? > > Thanks! > No.... Not only that, you are placing the echo commands in the background. So, it is certainly possible that the script will finish before the echos are completed. Not only that, there is no guarantee that all output from the echos will be written to "out". You can see this if you put a sleep after the last echo. [egreshko@meimei test]$ grep ^A out | wc 97 97 582 [egreshko@meimei test]$ grep ^B out | wc 94 94 564 [egreshko@meimei test]$ grep ^C out | wc 96 96 576 Your results will vary depending on the number of CPU's. If you have a single CPU system, you may very well get all 300. -- Never be afraid to laugh at yourself, after all, you could be missing out on the joke of the century. -- Dame Edna Everage -- users mailing list users@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe or change subscription options: https://admin.fedoraproject.org/mailman/listinfo/users Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines Have a question? Ask away: http://ask.fedoraproject.org