linux程序間的通訊 無名管道

2021-07-07 04:55:11 字數 710 閱讀 7382

注意:學習程序間的通訊重點在每種通訊方式所適用的場景和其使用方法。

乙個程序在管道的尾部寫入資料,另乙個程序從管道的頭部讀出資料。管道包括無名管道和有名管道兩種,前者只能用於父程序和子程序間的通訊,後者可用於執行於同一系統中的任意兩個程序間的通訊。

管道通訊是單向的,有固定的讀端和寫端

資料被程序從管道讀出後,在管道中該資料就不存在了

當程序讀取空管到時,程序會阻塞

當程序寫入滿管道時,程序會阻塞

管道容量為64kb(定義在#define pipe_buffers 16 /include/linux/pipe_fs_i.h)

在linux中,無名管道一旦被建立完成後,操作無名管道等同於操作檔案。無名管道的讀端和寫端都被視為檔案。(即對無名管道的操作等同於對檔案的操作,進一步說就是可以通過read,write,close來操作無名管道)

#include 

#include

#include

#include

#include

void main(void)

else

}

程式執行結果:

列印出:hello,world!

程序間通訊 無名管道

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

程序間通訊 無名管道

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

Linux程序間通訊之無名管道

在學習了linux程序間通訊之後,打算對所學的知識進行乙個系統的整理,形成乙個自己的系列,方便以後的複習與再次學習。第一次寫部落格,才疏學淺,有錯誤的地方請大佬們指正!管道的實現原理 管道檔案是乙個特殊的檔案,是由佇列實現的 如何建立管道?使用pipe 函式建立管道 pipe 函式 標頭檔案unis...