一、通訊的意義
1、傳輸資料:程序之間的通訊二、通訊的方式2、共享資源:不同程序之間共享同一資源
3、事件通知:乙個程序向另乙個或另一組程序傳送訊息通知
4、程序控制:如debug程序等需要完全控制另乙個程序的執行,即能攔截程序操作並知曉其狀態
1、無名管道:pipe (使用檔案操作函式: read, write, close),用於父子程序間的通訊2、有名管道:fifo (使用檔案操作函式: open, read, write, close),用於任意兩個程序之間的通訊3、訊號:signal三、管道通訊的特點4、訊息佇列
5、記憶體共享
6、訊號量:semaphore
7、套接字:socket
1、管道通訊方向:有固定的讀端和寫端四、函式學習2、資料不保留:當資料被程序從管道讀出後,管道中的資料就不存在了
3、程序阻塞:程序在讀或寫資料時程序會阻塞(相當於等待完成管道操作)
4、管道容量固定:64kb (/include/linux/pipe_fs_i.h)
5、管道資料:資料儲存於檔案中。也就是說操作管道相當於操作檔案(可用函式open,read,write,close)
1、無名管道:pipe
1)函式原型
int pipe(int pipefd[2]);
2)所屬標頭檔案
#include
3)返回值
成功: 0失敗: -1
4)引數說明
pipefd:儲存兩個檔案描述符
pipefd[0]: 指向管道讀端pipefd[1]: 指向管道寫端
* 無名管道案例(無名管道用於父子程序之間的通訊)2、有名管道1)建立有名管道:mkfifoa)函式原型int mkfifo(const char *pathname, mode_t mode);b)所屬標頭檔案#include#include
c)返回值成功: 0失敗: -1
d)引數說明pathname: 要建立的fifo檔案的名字(含路徑)mode: 建立的fifo檔案的訪問許可權2)刪除有名管道:unlinka)函式原型int unlink(const char *pathname);b)所屬標頭檔案#includec)返回值成功: 0失敗: -1
d)引數說明pathname: 要刪除的檔名* 案例 - 1: 寫管道#include #include #include #include void main()
* 案例 - 2: 讀管道#include #include #include #include void main()
* 案例 - 1 和 案例 - 2 執行結果:* unlink的功能為刪除管道, 也就是刪除有名管道檔案:fifo_file(檔名任意取)Linux 管道通訊
一 定義 管道是單向的 先進先出的。它將乙個程式的輸入和另乙個程式的輸出連線起來。資料被乙個程序讀出後,將被從管道中刪除。分為無名和有名管道兩種。前者用於父程序和子程序間的通訊,後者用於同一系統的兩個程序間通訊。二 無名管道 int pipe int fd 2 其中,fd 0 用於讀管道,fd 1 ...
Linux管道通訊
現在在linux 中使用較多的程序間通訊方式主要有以下幾種。1 管道 pipe 及有名管道 named pipe 管道可用於具有親緣關係程序間的通訊,有名管道,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊。2 訊號 signal 訊號是在軟體層次上對中斷機制的一種模擬,它是比較複雜的通訊...
linux 管道通訊
無名管道 1 管道是半雙工的,只能支援資料的單向流動 兩程序間需要通訊時需要建立起兩個管道 2 使用無名管道通訊的程序必須擁有公共祖先程序 pipe 1 標頭檔案 include 2 定義函式 int pipe int filedes 2 3 函式說明 pipe 會建立管道,並將檔案描述詞由引數fi...