漫畫:什么是Linux管道
后記:這篇小短文主要說了一下Linux管道的工作原理,管道是Linux中很重要的一種通信方式,它可以把一個程序的輸出直接連接到另一個程序的輸入,我們日常使用的管道多是指無名管道,無名管道只能用于具有親緣關系的進程之間,還有一個有名字的管道,叫named pipe或者fifo(先進先出),用mkfifo()就可以創建。
實際上,管道是一個固定大小的buffer,使用這個buffer時也會帶來問題,比如在寫管道時可能變滿,當這種情況發生時,隨后對管道的write()調用將默認地被阻塞,等待某些數據被讀取,以便騰出足夠的空間供write()調用寫。讀取進程也可能工作得比寫進程快。當所有當前進程數據已被讀取時,管道變空。當這種情況發生時,一個隨后的read()調用將默認地被阻塞,等待某些數據被寫入。
【本文為51CTO專欄作者“劉欣”的原創稿件,轉載請通過作者微信公眾號coderising獲取授權】