国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Linux BASH多進程并行處理的方法實現

2019-10-26 18:32:04
字體:
來源:轉載
供稿:網友

代碼如下:
#!/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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 呼玛县| 中阳县| 新龙县| 河南省| 荣昌县| 修水县| 江阴市| 凤冈县| 西乌珠穆沁旗| 明光市| 桑日县| 怀安县| 保山市| 德阳市| 衡东县| 平遥县| 玉门市| 明溪县| 泰来县| 屯门区| 枞阳县| 岢岚县| 汝南县| 新宁县| 宁明县| 仲巴县| 荔波县| 南木林县| 敖汉旗| 神木县| 白水县| 光泽县| 汾西县| 易门县| 繁峙县| 荥经县| 志丹县| 江津市| 绵阳市| 永州市| 全南县|