上篇主要是写的如何在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个字符串,然后每从管道内读出一个字符串就生成一个子进程,当管道内没有字符串可读时就阻塞在那里,不能创建新的子进程,一直等到有新的字符串进来时才继续运行。当每个并发进程执行完毕时又向管道内写入一个字符串,表示当前子进程已执行完毕,可以创建新的子进程了
阅读(651) | 评论(0) | 转发(0) |