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