shell多線程之進程間通信


# 這是一個簡單的並發程序,有如下要求:
# 1.有兩個程序a和b,希望他們能並發執行,以節約時間
# 2.a和b都是按照日期順序執行,但b每日程序的前提條件是當日a的程序已經執行完畢
#解決方案:
# 1.創建一個文件描述符作為pipe,a程序每次執行完就把一個日期發送給pipe,然后繼續執行
# 2.b程序每次執行時先從pipe讀取a的日期,如果a的日期>=b的日期,則b繼續執行,否則阻塞。

[ -e /tmp/fd5 ] || mkfifo /tmp/fd5
exec 5<>/tmp/fd5
rm -rf /tmp/fd5

aFun(){
for((i=0;i<10;i++))
do
    echo 'a'$i
    sleep 1
    echo $i >&5
done
}

bFun(){
for((i=0;i<10;i++))
do
    read -u5 j
    if [ $i -le $j ];then
            echo 'b'$i
    fi
    sleep 1
done
}
###################################################
aFun &
bFun
exec 5<&-
exec 5>&-

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM