linux中使用匿名管道實現程序間通訊

2021-07-22 08:50:45 字數 786 閱讀 1976

管道是最基本的ipc機制,由pipe函式建立。在呼叫pipe函式時,會在記憶體中建立乙個緩衝區,稱為管道。這個管道有兩個端,乙個讀端和乙個寫端。通過filedes引數傳給使用者程式的兩個檔案描述符,filedes[0]指向管道的讀端,filedes[1]指向管道的寫端。

在linux中一切皆檔案,管道可以看成是乙個檔案,可以通過read和write函式對管道進行讀寫操作。程序間通訊時如何通過匿名管道實現的呢?

1.父程序呼叫pipe開闢管道,得到兩個檔案描述符指向管道的兩端;

2.父程序呼叫fork建立子程序,子程序也有兩個檔案描述符指向管道的兩端;

3.父程序關閉管道讀端,子程序關閉管道寫端,父程序可以往管道裡寫,子程序可以從管道裡讀。管道用環形佇列實現,資料從寫入端流入,讀端流出,這樣就實現了程序間通訊。

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

pid_t id = fork();

if(id < 0)

else if(id == 0)

close(_pipe[1]);

} else

if(waitpid(id,null,0) < 0)

return 3;

} return 0;

}

執行結果:

總結:程序通過檔案描述符對管道進行控制,只有有血緣關係的程序才可以通過管道進行通訊。

Linux 匿名管道

管道這裡還有幾組概念 匿名管道 概念 匿名管道 匿名管道用於程序之間通訊,且僅限於本地父子程序之間通訊 建立方式 int pipe int fd 2 fd 檔案描述符陣列,其中fd 0 表示讀端,fd 1 表示寫端 返回值 成功返回0,失敗返回錯誤 5大特點 4種情況 例項 從鍵盤讀取資料,寫入管道...

linux管道通訊之匿名管道

管道檔案的大小始終是為0,更多的時候,它只是起乙個標識作用,標識核心中的那塊快取區。就會出現所謂的匿名管道 比如父子程序之間的通訊 使用pipe建立匿名管道,看不到pipe檔案。pipe int fds 2 fds 0 讀,fds 1 寫 返回2個檔案描述符,乙個讀檔案描述符,乙個寫檔案描述符。匿名...

linux 匿名管道pipe

管道是一種最基本的ipc機制,由pipe函式建立 include int pipe int filedes 2 呼叫pipe函式時在核心中開闢一塊緩衝區 稱為管道 用於通訊,它有乙個讀端乙個寫端,然後通 過filedes引數傳出給使用者程式兩個檔案描述符,filedes 0 指向管道的讀端,file...