"$tmp_fifofi ;更新日期:2025/9/23,杰网资源,站长资源网,CPU天梯,显卡天梯,UU加速器,阅读3.0,英雄联盟,怪物猎人,成人身份证号大全2023,实名认证,王者荣耀,绿色地狱合成表,,2022年防沉迷身份证,qq飞车紫钻,序列号,破解版,注册机,绿色版,互联网资源,福利资源,网络流行语,高清电影,韩剧美剧,Q币活动,Q钻活动,动漫资讯,游戏教程,LOL资讯视频,CF活动大全,LOL最新活动,CF实用技巧,DNF活动资讯,和平精英,技术教程,SEO教程,QQ教程,网络教程,下载中心,破解软件,游戏软件,网站源码,易语言源码,安卓软件,QQ软件,汉化版,无损音乐,MKV,WAV+CUE,FLAC,HQCD,MP3,SACD,DSD,抖音,720P,1080P,2160P,2K,4K高清,320k,度盘,百度云盘,蓝奏,微云盘,网盘,无广告纯净版,不限速下载,去广告,修改器,VIP解析">

Linux BASH多进程并行处理的方法实现

脚本专栏 发布日期:2025/9/23 浏览次数:1

正在浏览:Linux BASH多进程并行处理的方法实现

复制代码 代码如下:
#!/bin/bash

SEND_THREAD_NUM=13
tmp_fifofile="/tmp/$$.fifo" # 脚本运行的当前进程ID号作为文件名
mkfifo “$tmp_fifofile" # 新建一个随机fifo管道文件
exec 6<>"$tmp_fifofile" # 定义文件描述符6指向这个fifo管道文件
rm $tmp_fifofile
for ((i=0;i<$SEND_THREAD_NUM;i++));do
echo # for循环 往 fifo管道文件中写入13个空行
done >&6

for i in `seq 100`;do # 100 次 for 循环 开始
read -u6 # 从文件描述符6中读取行(实际指向fifo管道)
{
echo $i # 打印 i
sleep 3 # 暂停3秒
echo >&6 # 再次往fifo管道文件中写入一个空行。
} &

# {} 这部分语句被放入后台作为一个子进程执行,所以不必每次等待3秒后执行
#下一个,这部分的echo $i几乎是同时完成的,当fifo中13个空行读完后 for循环
# 继续等待 read 中读取fifo数据,当后台的13个子进程等待3秒后,按次序
# 排队往fifo输入空行,这样fifo中又有了数据,for语句继续执行

pid=$! #打印最后一个进入后台的子进程id
echo $pid

done
wait
exec 6>&- #删除文件描述符6

exit 0