1 #!/bin/bash 2 3 SEND_THREAD_NUM=13 #設置進程數。 4 tmp_fifofile="/tmp/$$.fifo" # 腳本運行的當前進程ID號作為文件名 5 mkfifo "$tmp_fifofile" # 新建一個隨機fifo管道文件 6 exec 6<>"$tmp_fifofile" # 定義文件描述符6指向這個fifo管道文件 7 rm "$tmp_fifofile" 8 for ((i=0;i<$SEND_THREAD_NUM;i++));do 9 echo # for循環 往 fifo管道文件中寫入13個空行 10 done >&6 11 12 # 以下循環采用 while read 變量 的處理一行數據,看需要吧 13 for i in `seq 100`;do # 100 次 for 循環 開始 14 read -u6 # 從文件描述符6中讀取行(實際指向fifo管道) 15 16 { 17 echo $i # 打印 i 18 sleep 3 # 暫停3秒 19 echo >&6 # 再次往fifo管道文件中寫入一個空行。 20 } & 21 22 # {}部分語句被放入后台作為一個子進程執行,所以不必每次等待3秒后執行 23 #下一個,這部分的echo $i幾乎是同時完成的,當fifo中13個空行讀完后 for循環 24 # 繼續等待 read 中讀取fifo數據,當后台的13個子進程等待3秒后,按次序 25 # 排隊往fifo輸入空行,這樣fifo中又有了數據,for語句繼續執行 26 27 done 28 wait #等到后台的進程都執行完畢。 29 exec 6>&- #刪除文件描述符6 30 exit 0
與 mkfifo、exec 使用關聯學習
其實也就是並發進程。