一.管道容量
:我們通過ulimit -a命令檢視到的pipo size定義的是核心管道緩衝區的大小,這個值的大小是由核心設定的;而pipe capacity指的是管道的最大值,即容量,是核心記憶體中的乙個緩衝區。
1.首先我們通過命令來看一下核心管道緩衝區的大小:
2.我們可以通過乙個程式來測試管道的最大容量
#include
#include
#include
#include
#include
#include
int main()
int ret;
int size = 0;
int flags = fcntl(pipefd[1], f_getfl);
fcntl(pipefd[1], f_setfl, flags | o_nonblock); // 設定為非阻塞
上述**中fcntl()函式的相關解釋
可以用fcntl 函式改變乙個已開啟的檔案的屬性,可以重新設定讀、寫、追加、非阻塞等標誌
引數 f_setfl:對於filedes
設定檔案描述符標誌。新標誌值按第三個引數 (取為整型值)設定。
引數 f_getfl: 對應於filedes 的檔案狀態標誌作為函式值返回
引數 o_nonblock:設定為非阻塞。
二.管道的資料結構:在 linux
中,管道的實現
並沒有使用專門的
資料結構,而是
借助了檔案系統的file結構和vfs的索引節點inode
。通過將兩個 file 結構指向同乙個臨時的 vfs 索引節點,而這個 vfs 索引節點又指向乙個物理頁面而實現的。
探索linux管道的容量
管道特點 1 單向通訊。資料只能由乙個程序流向另乙個程序 其中乙個讀管道,乙個寫管道 如果要進行雙工通訊,需要建 立兩個管道。2 管道只能用於有血緣關係的程序間通訊。3 流式服務。傳送和接收大小不受特定格式的限制。4 管道的生命週期和程序有關。5 同步與互斥原則。fcntl 可以改變已開啟的檔案性質...
linux 管道的大小,緩衝,阻塞方法,以及容量
ulimit a可以檢視管道的大小,這是核心設定的為8 512byte 4k linux 管道實現的機制 從本質上說,管道也是一種檔案,但他又和一般的檔案有所不同,管道可以克服使用檔案進行通訊的兩個問題 限制管道的大小。實際上,管道是乙個固定大小的緩衝區。在linux中該換沖區的大小為一頁,4k 使...
Linux管道命令及管道相關命令 詳細
4.sort 排序 5.wc 命令 5.3 小結 6.uniq 去重 6.3 小結 7.tee命令 7.3 小結 8.tr 命令 這可不是html的 行哦 9.split 命令 9.3 小結 命令a 命令b 命令a的輸出當做命令b的輸入 管道是一種通訊機制,通常用於程序間的通訊 也可通過socket...