程序間通訊之管道篇

2021-05-23 03:27:04 字數 556 閱讀 7946

這裡我們談談程序間互動的機制,這裡不同於使用訊號來讓程序間傳送訊息。

當從乙個程序連線資料流到另乙個程序時,我們使用術語管道(pipe)。我們通常是把乙個程序的輸出通過管道連線

到另乙個程序的輸入。

我們來看看底層的pipe()函式呼叫。通過這個函式在兩個程式間傳遞資料不需要啟動乙個shell來解釋請求的命令。

他同時還提供量對讀寫資料的更多控制。

pipe函式的原型如下:

特別要注意的是,這裡使用的是檔案描述符而不是檔案流,所以必須用底層的read和write呼叫來訪問資料,而不是fread和

fwrite。

下面我們通過乙個例項來說明,在這個例項中,我們使用了兩個程式。第乙個是「資料生產者」;第二是「資料消費者」。

下面來看看例項:

資料消費者負責讀取資料,

執行結果:

[sea@localhost ~]$ ./pipe1

2470 - wrote 3 bytes

2471 - read 3 bytes:123

程序間通訊之管道篇

在介紹管道之前,我們先了解一下程序間通訊。程序間通訊目的 程序間通訊的分類 本篇部落格將著重介紹管道。什麼是管道?匿名管道 include h 功能 建立一無名管道 原型 int pipe int fd 2 引數,fd檔案描述符陣列,fd 0 表示讀端,fd 1 表示寫段 返回值 成功返回0,失敗返...

程序間通訊之管道篇

每個程序各自有不同的使用者位址空間,任何乙個程序的全域性變數在另乙個程序中都是看不到的。所以程序之間如果要交換資料就必須通過核心。在核心中開闢一塊緩衝區,程序1把資料從使用者空間拷到核心緩衝區,程序2再從核心緩衝區把資料讀走,核心提供的這種機制稱為程序間通訊 ipc,interprocess com...

程序間通訊 之 管道

一 無名管道 特點 具有親緣關係的程序間通訊,但不僅僅指父子程序之間哦。1 無名管道的建立 int pipe int pipefd 引數 pipefd 陣列的首位址 返回值 成功返回0,失敗返回 1 注意 無名管道存在核心空間,建立成功會給使用者空間兩個檔案描述符,fd 0 讀管道 fd 1 寫管道...