linux程序間通訊之一 無名管道

2021-10-19 14:22:12 字數 660 閱讀 9783

無名管道是linux中管道通訊的一種原始方法,有以下特徵:

1、單工通訊模式,具有固定的讀端和寫端;

2、管道可以看成是一種特殊的檔案,對於它的讀寫可以使用普通的read(),write()等檔案io操作函式介面,但是它不屬於任何檔案系統,並且只存在與記憶體中;

3、只能用於具有親緣關係的程序之間的通訊;

4、通常使用時,首先建立乙個管道,然後呼叫fork函式建立乙個子程序,該子程序會繼承父程序所建立的管道;

5、只有在管道的讀端存在時,向管道寫入資料才有意義,否則向管道寫入的資料的程序將收到核心傳送過來的sigpepe訊號;

6、向管道寫入資料時,linux不保證寫入的原子性,管道緩衝區只要有空間,寫程序就會試圖向管道寫入資料,如果管道緩衝區已滿,那麼寫操作將會一直阻塞;

下面例子詳盡闡述管道的使用方法,首先建立管道,然後父程序使用fork函式建立子程序,最後通過關閉父程序的讀描述符和子程序的寫描述符,建立它們之間的通訊,父子程序的先後順序通過訊號量pv操作來實現;圖1為詳盡實現**,圖2為編譯執行後結果。

程序間通訊 無名管道

在上次的部落格中,我給大家介紹了程序間通訊的方式 有名管道。管道分為有名管道和無名管道,那麼此次我將給大家介紹一下另一種管道通訊 無名管道。有名管道是可以應用於任何兩個程序之間資料的單向傳遞,而無名管道是相對於有名管道的,無名管道在使用時產生,不使用後釋放,並不會在系統上留下任何痕跡。無名管道因其使...

程序間通訊 無名管道

1.無名管道 pipe 2.有名管道 fifo 3.訊號 signal 4.共享記憶體 share memory 5.訊息佇列 message queue 6.訊號燈集 semaphore set 7.套接字 1.只能用於具有親緣關係的程序之間的通訊 父子或兄弟程序 2.彈弓的通訊模式,具有固定的讀...

linux程序間的通訊 無名管道

注意 學習程序間的通訊重點在每種通訊方式所適用的場景和其使用方法。乙個程序在管道的尾部寫入資料,另乙個程序從管道的頭部讀出資料。管道包括無名管道和有名管道兩種,前者只能用於父程序和子程序間的通訊,後者可用於執行於同一系統中的任意兩個程序間的通訊。管道通訊是單向的,有固定的讀端和寫端 資料被程序從管道...