轉載 http://blog.csdn.net/wangtaoking1/article/details/9965271
上篇主要是寫的如何在Shell腳本中編寫併發程序,這次寫一下如何控制進程的數量。
在網上參考了一下別人的方法,主要都是利用管道的思想。
參考如下程序:
#!bin/bash PRONUM=10 #進程個數 tmpfile="$$.fifo" #臨時生成管道文件 mkfifo $tmpfile exec 6<>$tmpfile rm $tmpfile for(( i=0; i<$PRONUM; i++ )) do echo "init." done >&6 for(( i = 0; i < ${count}; i++ )) do read line #echo $line { commands echo "line${i} finished." } >&6 & done <&6 wait
初始時給管道內寫入PRONUM個字符串,然後每從管道內讀出一個字符串就生成一個子進程,當管道內沒有字符串可讀時就阻塞在那裏,不能創建新的子進程,一直等到有新的字符串進來時才繼續運行。當每個併發進程執行完畢時又向管道內寫入一個字符串,表示當前子進程已執行完畢,可以創建新的子進程了。