練習 LINUX程序間通訊之有名管理FIFO

2021-09-09 01:33:14 字數 1108 閱讀 1471

從fifo中讀取資料:

約定:如果乙個程序為了從fifo中讀取資料而阻塞開啟fifo,那麼稱該程序內的讀操作為設定了阻塞標誌的讀操作。

注:如果fifo中有資料,則設定了阻塞標誌的讀操作不會因為fifo中的位元組數小於請求讀的位元組數而阻塞,此時,讀操作會返回fifo中現有的資料量。

向fifo中寫入資料:

約定:如果乙個程序為了向fifo中寫入資料而阻塞開啟fifo,那麼稱該程序內的寫操作為設定了阻塞標誌的寫操作。

對於設定了阻塞標誌的寫操作:

對於沒有設定阻塞標誌的寫操作:

**可能打錯,因為無輸出。。:)

等以後有實際用途再說吧,

現在關鍵是理解一下思想。

清除阻塞和非阻塞讀寫的原子性之類的東東。

所以,沒有一種模式是絕對標準,一定要整合業務場景需求。

/*

****************

* * test.c* *

*****************

*/#include

#include

#include

#include

#include

#include

#include

#define fifo_server "/tmp/fifoserver"main(

int argc, char**ar**)

if(fd == -1

)

}fd = open(fifo_server, o_wronly|o_nonblock, 0

);

//fd = open(fifo_server, o_wronly, 0);

real_wnum = write(fd, w_buf, 2048

);

if(real_wnum == -1

)

}else

real_wnum = write(fd, w_buf, 5000

);

//real_wnum = write(fd, w_buf, 4096);

if(real_wnum == -1

)

}}

程序間通訊之有名管道

相對於無名管道而言,有名管道當然是有名字的,這樣就可以使任何程序通過檔名或路徑名與該管道掛鉤。所以,有名管道可用於任意兩程序之間的通訊。就有名管道和無名管道的實現來說,主要是在開啟方式上有所不同,管道檔案一旦開啟 建立 以後兩者對管道檔案的讀 寫和關閉操作相同。int open const char...

Linux程序通訊之有名管道

1 定義參照前文無名管道 2 特點 1 區別於無名,管道有名管道可以使互不相關的兩個程序通訊 在建立管道時,通過路徑 檔名來進行識別 2 建立有名管道後,程序可以將其作為檔案來進行讀寫 3 先進先出fifo。4 fifo在寫入的資料的位元組數小於或者等於pipe buf時,能夠保證write操作是原...

程序通訊之有名管道

程序通訊之有名管道 一 前言 我們前面部落格講過,父子程序之間,對於檔案操作的檔案操作符是共享的,而對於程序的全域性資料,堆區資料,棧區資料是不共享的,那麼程序之間到底是怎麼進行資訊的傳遞的呢,具體的實現,以及傳遞的過程是怎麼完成的呢,前面我們講過訊號在程序之間的使用,那也是一種程序之間資訊的傳遞。...