程序間通訊 無名管道

2021-10-12 04:27:23 字數 789 閱讀 3593

1.無名管道(pipe)

2.有名管道(fifo)

3.訊號(signal)

4.共享記憶體(share memory)

5.訊息佇列(message queue)

6.訊號燈集(semaphore set)

7.套接字

1.只能用於具有親緣關係的程序之間的通訊(父子或兄弟程序)

2.彈弓的通訊模式,具有固定的讀端和寫端

3.無名管道建立時會返回兩個檔案描述符,分別用於讀寫管道

#include int pipe(int pfd[2]);
1.成功時返回0,失敗時返回eof

2.pfd包含兩個元素的整型陣列,用來儲存檔案描述符

3.pfd[0]用於讀管道;pfd[1]用於寫管道

1.寫端存在:有資料則讀取資料;無資料則阻塞

2.寫端不存在:不可能有資料;無資料則立即返回

1.讀端存在:有空間則寫入成功;無空間則阻塞

2.讀端不存在:管道破裂

#include

#include

#include

intmain

(int argc,

const

char

*ar**)

pid =

fork()

;if(pid <0)

else

if(pid ==0)

}else

else}}

return0;

}

程序間通訊 無名管道

在上次的部落格中,我給大家介紹了程序間通訊的方式 有名管道。管道分為有名管道和無名管道,那麼此次我將給大家介紹一下另一種管道通訊 無名管道。有名管道是可以應用於任何兩個程序之間資料的單向傳遞,而無名管道是相對於有名管道的,無名管道在使用時產生,不使用後釋放,並不會在系統上留下任何痕跡。無名管道因其使...

程序間通訊 有名管道 無名管道

顧名思義,管道就像是將資料放入到乙個長長的管子中一樣,肯定會有一端寫入資料,稱為寫端,有一段讀出資料,稱為讀端。既然是說像管子一樣那麼它肯定有大小吧,資源不是無窮無盡的,預設下管道的大小是64k,用ulimit a 可以檢視。1 無名管道 管道是半雙工的,資料只能向乙個方向流動 需要雙方通訊時,需要...

程序間通訊(2) 無名管道

1.無名管道 1.1 概念 相對於有名管道,沒有名稱,不能在任意程序之間使用,只能應用與父子程序之間,其原理是父子之間共享檔案描述符,所以fork 之前開啟無名管道 1.2建立並開啟 int pipe int fd 2 函式庫裡 fd 0 寫端 fd 1 讀端 1 include 2 include...