Linux程序間的通訊 管道通訊

2021-07-24 00:01:22 字數 1827 閱讀 9266

管道通訊

·管道是單向的、先進先出的,它把乙個程序的輸出和另乙個程序的輸入連線在一起。

·乙個程序(寫程序)在管道的尾部寫入資料,另乙個程序(讀程序)從管道的頭部讀出資料

·資料被乙個程序讀出後,將被從管道中刪除,其它讀程序將不能再讀到這些資料。

·管道提供了簡單的流控制機制,程序試圖讀空管道時,程序將阻塞。同樣,管道已經滿時,程序再試圖向管道寫入資料,程序將阻塞

無名管道:

1.pipe

函式的原型:int pipe(int fds[2])

函式的引數:新建的兩個描述符fds陣列返回,fds[0]表示管道的讀取端,fds[1]表示管道的寫入端。

返 回 值:成功0,出錯-1

頭 文 件:#include

管道讀寫:

1.先建立管道pipe;

2.fork建立子程序

[html]view plain

copy

#include 

<

unistd.h

>

#include <

errno.h

>

#include <

stdio.h

>

#include <

stdlib.h

>

int main()  

else  

printf("pipe create success\n");  

close(pipe_fd[0]);  

close(pipe_fd[1]);  

}  

有名管道:

·建立管道mkfifo

·開啟管道open

·讀管道read

·寫管道write

·關閉管道close

·刪除管道unlink

2.mkfifo

函式的作用:建立有名管道

函式的原型:int mkfifo(const char * filename,mode_t mode)

引數的作用:filename:有名管道的路徑、名稱

mode:開啟管道的方式

o_nonblock:  fifo開啟的時候,費阻塞

o_rdonly:  唯讀

o_wronly:  只寫

o_rdwr:  可讀寫

返 回 值:成功 0    出錯 -1

Linux 程序間通訊 管道通訊

管道是 單向的 先進先出的,它把乙個程序的輸出和另乙個程序的輸入連線在一起,乙個程序 寫程序 在管道的尾部寫入資料,另乙個程序 讀程序 從管道的頭部讀出資料 資料被乙個程序讀出之後,將被從管道中刪除,其它讀程序將不能再讀到這些資料,管道提供了 簡單的流控制機制,程序試圖讀空管道時,程序將阻塞,同樣,...

Linux程序間通訊 管道通訊

1.管道簡介 管道是linux中程序間通訊的一種方式,它把乙個程式的輸出直接連線到另乙個程式的輸入。管道主要包括兩種 無名管道和有名管道 無名管道 有名管道 linux中管道通訊的一種原始方法 對無名管道的一種改進 只能用於具有親緣關係的程序之間通訊 可以使互不相關的兩個程序實現彼此通訊 單工的通訊...

Linux程序間通訊 管道

linux程序間通訊機制 1.同一主機程序間通訊機制 unix方式 有名管道fifo 無名管道pipe 訊號signal systemv方式 訊號量 訊息佇列 共享記憶體 2.網路通訊 rpc remote procedure call socket 管道管道是程序間通訊中最古老的方式,它包括無名管...