LINUX C學習筆記 2 管道通訊1

2021-08-14 22:27:27 字數 1129 閱讀 6476

1 什麼是管道通訊

管道(pipe)是單向的、先進先出的、無結構的、固定大小的位元組流,它把乙個程序的標準輸出和另乙個程序的標準輸入連線在一起。寫程序在管道的尾端寫入資料,讀程序在管道的首端讀出資料。資料讀出後將從管道中移走,其它讀程序都不能再讀到這些資料。管道提供了簡單的流控制機制。程序試圖讀空管道時,在有資料寫入管道前,程序將一直阻塞。同樣,管道已經滿時,程序再試圖寫管道,在其它程序從管道中移走資料之前,寫程序將一直阻塞。管道主要用於不同程序間通訊。

2 怎麼用管道通訊

函式原型:

int pipe( int fd[2]);
引數:fd[2] 。它接受乙個引數,也就是乙個包括兩個整數的陣列。如果系統呼叫成功,此陣列將包括管道使用的兩個檔案描述符。建立乙個管道之後,一般情況下程序將產生乙個新的程序。fd[0]用於讀取管道,fd[1]用於寫入管道。

返回值:如果系統呼叫成功,返回0。如果系統呼叫失敗返回-1:

3 示例1

#include#include#include#include#include#include#includeint main()

執行結果:

root@ubuntu:/mnt/share/test# gcc -o pipe_3 pipe_3.c

root@ubuntu:/mnt/share/test# ./pipe_3

creat pipe ok

hello world !

4 示例2
#include#include#include#include#include#include#includeint main()

else if (pid > 0)

else

}

執行結果:

root@ubuntu:/mnt/share/test# gcc -o pipe_3 pipe_3.c

root@ubuntu:/mnt/share/test# ./pipe_3

creat pipe ok

receive hello world !

root@ubuntu:/mnt/share/test#

Linux C命名管道實現程序間通訊

命名管道 命名管道也被稱為fifo檔案,它是一種特殊型別的檔案,它在檔案系統中以檔名的形式存在,但是它的行為卻和之前所講的沒有名字的管道 匿名管道 類似。建立命名管道 以下兩個函式都可以用來建立命名管道 任選乙個 函式原型如下 include include int mkfifo const cha...

linux c開發(5 2)程序間通訊 管道通訊

什麼是管道?管道是單向的 先進先出的,他把乙個程序的輸出和另乙個程序的輸入連線在一起。乙個程序 寫程序 在管道的尾部寫入資料,另乙個程序 讀程序 從管道的頭部讀出資料。管道建立 管道包括無名管道和有名管道兩種,前者用於父程序和子程序間的通訊,後者可用於同一系統中的任意兩個程序間的通訊。無名管道由pi...

程序間通訊學習筆記一 管道通訊

程序間通訊 ipc 應用場景 資料傳輸 資源共享 通知事件 程序控制 system v at t system v posix portable operating system inte ce 可移植作業系統介面 常用的程序間通訊的方式 管道 pipe 和有名管道 fifo 訊號 signal 訊...