探索linux管道的容量

2021-07-14 07:45:56 字數 655 閱讀 8952

管道特點:

(1)、單向通訊。資料只能由乙個程序流向另乙個程序(其中乙個讀管道,乙個寫管道);如果要進行雙工通訊,需要建 立兩個管道。

(2)、管道只能用於有血緣關係的程序間通訊。

(3)、流式服務。傳送和接收大小不受特定格式的限制。

(4)、管道的生命週期和程序有關。

(5)、同步與互斥原則。

fcntl()可以改變已開啟的檔案性質

f_getfl 取得檔案描述符狀態旗標,此旗標為open()的引數flags。

#include

#include

#include

#include

#include

#include

#include

int main()

int ret;

int count=0;

int flag=fcntl(_pipe[1],f_getfl);

fcntl(_pipe[1],f_setfl,flag|o_nonblock);

while(1)

count++;

}printf("count=%d\n",count);

return

0;}

所以管道的容量是64kb。

linux下管道的容量以及實現機制

一 管道外部實現 當我們定義乙個管道時,這個管道 是由核心管理的乙個緩衝區,可以抽象為現實生活中的乙個傳輸線路。管道的一端連線乙個程序的輸出,這個程序會向管道中放入資訊。管道的另一端連線乙個程序的輸入,這個程序取出被放入管道的資訊。當管道中沒有資訊的話,從管道中讀取的程序會等待,直到另一端的程序放入...

linux下管道的容量以及實現機制

一 管道外部實現 當我們定義乙個管道時,這個管道是由核心管理的乙個緩衝區,可以抽象為現實生活中的乙個傳輸線路。管道的一端連線乙個程序的輸出,這個程序會向管道中放入資訊。管道的另一端連線乙個程序的輸入,這個程序取出被放入管道的資訊。當管道中沒有資訊的話,從管道中讀取的程序會等待,直到另一端的程序放入資...

Linux管道的容量大小及管道的資料結構

一.管道容量 我們通過ulimit a命令檢視到的pipo size定義的是核心管道緩衝區的大小,這個值的大小是由核心設定的 而pipe capacity指的是管道的最大值,即容量,是核心記憶體中的乙個緩衝區。1.首先我們通過命令來看一下核心管道緩衝區的大小 2.我們可以通過乙個程式來測試管道的最大...