linux C 有名管道

2021-06-22 19:13:38 字數 1076 閱讀 5422

匿名管道呢,只能使用在有親緣關係的程序之間,比如父子程序個兄弟程序,等等,因為匿名管道是乙個在記憶體中存在的檔案,其位址描述符只是在父子程序之中才有體現,為了克服該缺點,就有了命名管道的實現,命名管道呢,實際上就是乙個在檔案系統中儲存的檔案,命名管道是乙個裝置檔案,同時,該管道檔案也是fifo(first  in first out)的形式,即,第乙個被寫入的資料,將第乙個被讀出

建立命名管道的系統函式

int  mkfifo(const char* path,mode_t mode);path指示的是管道檔案的全路經,mode則是管道模式和具有訪問許可權

int  mknod(const char* path,mode_t mode,dev_t dev)同上,但是dev為裝置值,取決於檔案的建立型別。

現在說下他的編碼實現,因為管道操作是半雙工通訊,有名管道呢,其主要含義就是根據管道到檔案所在的路徑進行通訊的,也就是說,我們要進行相應的東西,進行操作

現在看下server

/** main.cpp

* * created on: jul 16, 2014

* author: john

*/#include#include#include#include#include#include#include#include#includeusing namespace std;

//#define fifo_read "/tmp/writefifo"

#define fifo_write "/tmp/readfifo"

#define buf_size 1024

int main()

; umask(0);

if(mkfifo(fifo_write,s_ififo|0666))

int leng= write(wfd,ubuf,strlen(ubuf));

if(leng>0)

; umask(0);

while((rfd=open(fifo_read,o_rdonly))==-1)

{cout<<"open..."<0)

{ubuf[len]='\0';

cout<<"server:"<

Linux c 管道和有名管道(FIFO)

一.管道 1.只能用於具有親緣關係的程序之間的通訊 2.半雙工通訊模式 3.一種特殊的檔案,是一種只存在於核心中的讀寫函式 管道基於檔案描述符,管道建立時,有兩個檔案描述符 a.fd 0 固定用於讀管道 b.fd 1 固定用於寫管道 建立管道 pipe 一般步驟 1.pipe 建立管道 2.fork...

管道及有名管道

管道和有名管道是最早的程序間通訊機制之一,管道可用於具有親緣關係程序間的通訊,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊。認清管道和有名管道的讀寫規則是在程式中應用它們的關鍵,本文在詳細討論了管道和有名管道的通訊機制的基礎上,用例項對其讀寫規則進...

有名管道管道程式設計

linux程序和程序之間有多種通訊方式。linux程序間通訊的主要方式有 1 無名管道 2 有名管道 3 訊號 4 訊息佇列 5 共享記憶體 6 訊號量 7 套接字 管道操作是比較簡單的通訊方式,乙個程序往管道中寫入資料,另乙個程序從管道中讀出資料。管道包括無名管道和有名管道。前者只能用於父程序和子...