IPC進程通信方式——管道通信方式

管道分無名管道和有名管道(FIFO)

  管道通信是Unix進程通信最早的方式,只適用於兩個進程之間通信,網格通信就很複雜,而且它是半雙工的,一個管道一般只用於一個方向。

  關於爲什麼是半雙工的:如果你又要讀又要寫,你的可能讀到自己寫的。無名管道和有名管道讀寫方式區別不大,只是親緣進程可不可用的關係。

  無名管道,要共享文件描述符,fork之後管道的兩個讀寫描述符一起用指向一樣,所以可以進行通信。 非親緣進程不能通過名字找到,但是有名管道是可以顯式地找到,通過文件描述符打開。

  下面是無名管道的示例代碼(第二六行buf和fd[0]寫反了),但是備份已經刪除了,代碼寫的很亂,建議自己練練手:
在這裏插入圖片描述
  我們要明白的是管道的原理,管道用的是內存中的高速緩存,管道文件不在硬盤中,它用的是僞文件系統,不屬於任何文件系統,只在內存中存在(有名管道會創建文件但其實不在硬盤中)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章