Shell 多进程实现

#!/bin/bash

SEND_THREAD_NUM=3
tmp_fifofile="/tmp/$$.fifo"
mkfifo "$tmp_fifofile"
exec 6<>"$tmp_fifofile"

for ((i=0;i<$SEND_THREAD_NUM;i++));do
                 echo #期望启动多少子进程, 就向管道中写入多少个空格                                                                  
done >&6


while (1>0)
do                                            
         read -u6
         {
                         echo $i      #将要执行的脚本或命令                                           
                         sleep 3      #为了便于观察加的休眠时间 , 正式环境时可去掉
                         echo >&6     #读出管道中的内容后, 再写入一个,以维持子进程数
         chid=$!
         echo "job work finish,process id $chid"                                       
         } &

        #pid=$!
        #echo "pid is $pid"
sleep 1  #多长时间启动一个子进程, 如果不加休眠, CPU利用率会到10%, 可以调整时间到一个合理范围, sleep(0.01) 10毫秒
done
wait

exec 6>&-
exit 0

相关推荐