shell中有個&,表示該程式在後台執行,其實是fork了乙個子程序,跟系統呼叫是一樣的。
在實際的操作過程中,有時需要控制後台程式的個數,畢竟啟動太多的後台,會對服務的效能造成影響。
所以需要控制後台程式的個數。
在shell中,可以利用管道技術來實現,如下是程式的模板及其注釋,有需要人可以拿去。
#!/bin/bashfifo="
/tmp/$$.fifo
"#建立管道$$表示shell分配的程序號
mkfifo
$fifo
exec
6<>$fifo #將fifo的fd與6號fd繫結
thread_num=8
#啟動的程序個數
count=0
;#預分配資源
while [[ $count -lt $thread_num ]]; do
echo >&6
#let count=count+1
count=$((count + 1
))done
#任務列表
file_list=$1
forfile
in$file_list
doread -u6 #請求乙個資源
& #後台執行
done
wait
#等待所有的任務完成
exec
6>&-#關閉fd 6描述符
rm $fifo
利用管道實現多程序間通訊
管道是linux系統最常見的程序間通訊方式之一,它在兩個程序之間實現乙個資料流通的通道,資料以一種資料流的方式在程序間流動。它把乙個程式的輸出直接連到另乙個程式的輸入。管道可以分為以下兩種,利用這兩種管道可以實現程序間的通訊,但是對於程序間的關係會有所限制 解決和 方法如下,資料以字元為例,通訊的內...
利用管道實現程序間通訊
管道 pipe 是程序用來通訊的共享記憶體區域。乙個程序往管道中寫入資訊,而其它的程序可以從管道中讀出資訊。如其名,管道是程序間資料交流的通道。郵路 mailslots 的功能與管道類似,也是程序間通訊 interprocess communications,ipc 的媒介,只不過其具體實現方式與管...
利用管道實現程序間同步
程序間同步是指程序的執行有先後順序,如a程序等待b程序執行完某個動作a程序才能繼續往下執行。程序間通訊的方法都可以用來同步,只是操作是否方便的乙個問題。複習了unix高階程式設計,覺得posix的訊號量是使用起來最方便的。可是無奈程式寫完放到板子裡面跑時,列印提示sem open function ...