#!/bin/bash tmp_fifofile="/tmp/$$.fifo" mkfifo "$tmp_fifofile" exec 6<>"$tmp_fifofile" for ((i=1;i<=10;i++));do echo done >&6 for i in `seq 1 100`;do read -u6 { echo $i >> /tmp/amos.log ; sleep 3 ; echo >&6; } & done wait exec 6>&- exit 0
注释:
$$:当前进程的pid
1、创建管道文件$tmp_fifofile
2、将文件描述符6指向管道文件
3、for循环创建连接池,连接池大小为10
4、并发执行,sleep控制并发,一次并发10个。
exec
6
<>
"$tmp_fifofile":将文件描述符指向管道文件,这里之所以要创建管道文件,是因为必须用文件描述符指向管道文件,才能用read命令读取文件描述符。read一次读一行,而如果用while read line 读文件,会一次读去所有的行,输出的结果也不会是我们想要的。
exec
6
>&- 关键文件描述符
转载于:https://blog.51cto.com/qiufengsong/1385526