有名管道的創(chuàng)建 什么是無名管道?
什么是無名管道?匿名管道:管道是半雙工的,數(shù)據(jù)只能單向流動;當雙方需要通信時,需要建立兩條管道;只能在父子進程或兄弟進程(有親屬關(guān)系的進程)之間使用。單獨的文件系統(tǒng):管道是管道兩端進程的文件,但不是普
什么是無名管道?
匿名管道:管道是半雙工的,數(shù)據(jù)只能單向流動;當雙方需要通信時,需要建立兩條管道;只能在父子進程或兄弟進程(有親屬關(guān)系的進程)之間使用。
單獨的文件系統(tǒng):管道是管道兩端進程的文件,但不是普通文件。它不屬于文件系統(tǒng),而是一個自我支持的門戶,它形成一個單獨的文件系統(tǒng),只存在于內(nèi)存中。
將數(shù)據(jù)讀寫到管道的另一端。寫入的內(nèi)容每次都添加到管道緩沖區(qū)的末尾,數(shù)據(jù)每次都從緩沖區(qū)的頭部讀取。(有點像lieha)
#include<unistd。H>
int pipe(int FD[2])
此函數(shù)創(chuàng)建的管道的兩端位于進程的中間,在實際應(yīng)用中意義不大。因此,一個進程是由After pipe()創(chuàng)建一個管道后創(chuàng)建的,它通常會分叉一個子進程,然后通過管道實現(xiàn)父進程和子進程之間的通信(因此不難推斷,只要兩個進程之間有血緣關(guān)系,這里的血緣關(guān)系是指有一個共同的祖先,它們可以通過管道進行通信)。
在將數(shù)據(jù)寫入管道時,Linux不能保證寫入的原子性。一旦管道緩沖區(qū)中有空閑區(qū)域,寫入過程就會嘗試將數(shù)據(jù)寫入管道。如果讀取進程沒有讀取管道緩沖區(qū)中的數(shù)據(jù),則寫入操作將始終阻塞。