通訊目的:資料傳輸 資源共享 通知事件 程序控制
程序間通訊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 把標準輸出定位到管道寫端,因為...