#!/usr/bin/env bashprocess=${1:-5}ff=9function make_fifo(){ local num=$1 tmp_fifofile=/tmp/$$.fifo mkfifo $tmp_fifofile cmd="exec ${ff}<> $tmp_fifofile" eval $cmd rm $tmp_fifofile for i in `seq $num` do echo >&${ff} done}function clean_fifo(){ wait # 等待程序 cmd1="exec ${ff}>&-" cmd2="exec ${ff}<&-" eval $cmd1 eval $cmd2}function parall_funs(){ local funs=$1 for((i=0;i<10;i++)); do read -u ${ff} { $funs $i cmd="echo >&${ff}" eval $cmd }& done}function say(){ echo $1 sleep 1}make_fifo $processparall_funs sayclean_fifoecho "run end!"