半雙工管道:
單向通訊 ,shell 中 管道用 | 表示
$ ls -l|grep *.c //把 ls -l 的輸出當做 "grep *.c" 的輸入
程序建立管道, 每次建立兩個檔案描述符來操作管道,成功返回 0 ,失敗返回 -1
int pipe(int filedes[2]);
侷限性:管道是由核心管理的乙個緩衝區,它的一端連線乙個程序的輸出,另一端連線乙個程序的輸入。管道的緩衝區不需要很大,它被設計為環形的資料結構,當兩個程序都終止後,管道的生命週期也會被結束。
管道是乙個固定大小的緩衝區,在linux中,該緩衝區的大小為一頁,即4kb,使它的大小不會像普通檔案那樣不加檢驗的增長。在linux中,核心使用struct pipe_inode_info結構體來描述乙個管道,這個結構體定義在pipe_fs_i.h中。
原子性:
當要寫入的資料量不大於pipe_buf時,linux將保證寫入的原子性。
當要寫入的資料量大於pipe_buf時,linux將不再保證寫入的原子性。
--------------------------------------------分割線--------------
命名管道
1.建立 fifo
shell 下建立
$ mkfifo /ipc/namedfifo
c語言
#include#includeint mkfifo(const char *pathname, mode_t mode);
程序間通訊 和 執行緒間同步
前經常搞混,所以記錄下來。程序間通訊主要是指多個程序間的資料互動。而執行緒間同步主要指維護多個執行緒之間資料準確 一致性。一.程序間通訊主要有以下幾種方式 管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。有名管道 ...
Linux程序間通訊1
1.linux下程序間通訊方式有有那些?1 管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。2 有名管道 named pipe 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。3 訊號量 semop...
Linux 程序間通訊1
一 程序間通訊概述 程序間通訊 在使用者空間實現程序通訊是不可能的,通過linux核心通訊 1.資料傳輸 乙個程序需要將它的資料傳送給另乙個程序 2.資源共享 多個程序之間共享同樣的資源 3.通知事件 乙個程序需要向另乙個或一組程序傳送訊息,通知它們發生了某種事件 4.程序控制 有些程序希望完全控制...