寫腳本的時候用到FIFO,不是很會,就學習了下。下面是簡介:
FIFO也稱為有名管道,它是一種文件類型。FIFO簡單理解,就是它能把兩個不相關的進程聯系起來,FIFO就像一個公共通道,解決了不同進程之間的“代溝”。普通的無名管道只能讓相關的進程進行溝通(比如父shell和子shell之間)。還是用代碼來說明問題好了。
下面我模擬了一個FIFO通信的過程,主要有兩個進程。
打開終端A:
$ ./Client.sh
打開終端B:
$./Server.sh
你就能看到在終端B中從fifo中讀取到的數據,你要是在終端B中把每次讀fifo的間隔給改成2秒,就更能說明問題了。上面的程序,在實驗的時候最好通過不斷掛起A進程來查看,然後觀察B進程的輸出。你會知道FIFO整個是怎麼跑的。。。這裡就不詳細解釋了!(最近太累了~~~)
FIFO的出現,極好地解決了系統在應用過程中產生的大量的中間臨時文件的問題。FIFO可以被shell調用使數據從一個進程到另一個進程,系統不必為該中間通道去煩惱清理不必要的垃圾,或者去釋放該通道的資源,它可以被留做後來的進程使用。並且規避了匿名管道在作用域的限制,可應用於不相關的進程之間。