無名管道通訊程式設計

2021-07-01 23:57:36 字數 1147 閱讀 1265

通訊目的:資料傳輸 資源共享 通知事件 程序控制

程序間通訊ipc(interprocess communication)由以下幾部分發展而來:

1. unix程序間通訊

2. 基於system v程序間通訊

3. posix程序間通訊

posix(portable operating system inte***ce)表示可移植作業系統介面,電氣與電子工程師協會ieee最初開發posix標準,是為了提高unix環境下應用程式的可移植性,然而posix並不侷限於unxi,許多其他作業系統也支援,如microsoft windows

linux程序間通訊方式主要有:

1.無名管道pipe 

2.有名管道fifo 

3.訊號signal

4. 訊息佇列

5. 共享記憶體

6. 訊號量

7. 套接字socket

管道通訊

乙個程序在管道的尾部寫入資料,另乙個程序在管道的頭部讀取資料,管道包括有名管道和無名管道

有名管道:任意程序間通訊

無名管道:父子程序間通訊

特點:

1.管道通訊是單向的,有固定的讀端與寫端

2. 資料從管道中度出去後,資料在管道中就不存在了

3. 當程序去讀空管道的時候,程序會阻塞

4. 當程序往滿管道寫入資料時,程序會阻塞

5. 管道容量為64kb

無名管道

在linux系統中,無名管道一旦建立完成後,操作無名管道等同於操作檔案,無名管道的讀取視作乙個檔案,無名管道的寫端也被視作乙個檔案

建立無名管道

函式名:pipe

函式原型:int pipe(int pipefd[2]);

函式功能:建立無名管道

標頭檔案:

返回值: 成功:0  失敗:-1

引數說明: pipefd為檔案描述符,pipefd[0]為讀端,pipefd[1]位寫端

#include #include void main()

if(pid == 0) }

執行結果:child read hello

程序通訊 無名管道

管道是單向的 先進先出的,它把乙個程序的輸出和另乙個程序的輸入連線在一起。管道包括無名管道和有名管道兩種,前者用於父程序和子程序間的通訊,後者可用於執行於同一系統中的任意兩個程序間的通訊。乙個程序 寫程序 在管道的尾部寫入資料,另乙個程序 讀程序 從管道的頭部讀出資料。管道提供了簡單的流控制機制,程...

無名管道的通訊

通過使用管道實現兩個或多個程序之間的通訊。所謂管道,就是將乙個程序的標準輸出與另乙個程序的標準輸入聯絡在一起,進行通訊的一種方法。同組程序之間可用無名管道任意通訊,而不同組程序之間可通古共有名管道進行通訊。使用無名管道pipe 進行父子程序之間的通訊。分析 父程序首先使用pipe chanl 系統呼...

無名管道(pipe)通訊

這個程式用無名管道實現命令 cat etc passwd grep root 其實在終端命令中 就是乙個管道 cat etc passwd會把結果列印到標準輸出 grep root 會把結果從標準輸入 實現流程 1.父程序生產兩個子程序 程序扇的概念 2.子程序a a 把標準輸出定位到管道寫端,因為...