linux學習筆記之程序間的通訊 有名管道

2021-10-06 11:18:26 字數 1656 閱讀 4542

有名管道 ====》有名稱的管道 ===》fifo ====》在檔案系統中可見檔案

具備基本的管道所有特性:

具有有名管道自有的特性:

1、檔案系統可見

2、檔案讀寫方式調整;

3、有名管道檔案可以單獨建立;

使用框架:

建立有名管道 =》開啟有名管道》讀寫有名管道 ==》關閉有名管道 ==》解除安裝有名管道

1、建立有名管道:

#include

#include

int mkfifo(const char *pathname, mode_t mode);

功能:該函式可以在指定路徑下建立指定許可權的有名管道檔案。

引數:pathname 要建立的有名管道路徑+名稱;

mode 要建立的管道檔案的許可權;

返回值:成功 0

失敗 -1;

2、開啟有名管道:open

int open(const char *pathname, int flags);

功能:使用該函式開啟乙個已經建立好的有名管道;

引數: pathname 管道名稱+路徑

flags o_rdonly 唯讀方式開啟管道

o_wronly 只寫方式開啟管道

返回值:成功 如果以唯讀方式開啟,則返回值為管道讀端

如果以只寫方式開啟,則返回值為管道寫端

失敗  -1;
注意:由於管道必須保證讀寫端同步,如果一端不存在,

則另一端在該函式位置會阻塞等待。

3、管道的讀寫: 檔案io的read 和 write

讀: ssize_t read(int fd, void *buf, size_t count);

寫: ssize_t write(int fd, const void *buf, size_t count);

4、有名管道的關閉: close() ;

5、解除安裝有名管道: unlink();

int unlink(const char *pathname);

功能:解除安裝執行路徑下的有名管道檔案,即刪除管道檔案;

引數: pathname 要解除安裝的目標管道檔案

返回值:成功 0

失敗 -1;

//有名管道寫操作

#include

#include

#include

#include

#include

#include

#define n 32

intmain()

else

}else

char buf[n]=""

;while(1

)}return0;

}

//有名管道讀操作

#include

#include

#include

#include

#include

#include

#define n 32

intmain()

else

}else

char buf[n]=""

;while(1

)}return0;

}

Linux學習筆記(程序間通訊)

ipc 程序間通訊 linux下的多個程序間的通訊機制叫做ipc,它是多個程序之間進行相互溝通的一種方法。通過程序間通訊可以實現不同程序之間傳播和交換資訊。程序間通訊的目的 1.資料傳輸 2.資源共享 3.乙個程序需要向另乙個或一組程序傳送訊息,通知它或它們發生了某種事件 4.程序控制 程序間通訊的...

Linux程序間通訊 IPC 學習筆記。

ipc interprocess communication 程序間通訊 一 管道 1.無名管道 開啟與關閉管道 include int pipe int filedes 2 filedes 0 用於讀出資料,讀取時必須關閉寫入端,即close filedes 1 filedes 1 用於寫入資料,...

linux學習 程序間通訊之管道

在linux系統中,程序間通訊主要有以下幾種方式,這一期及以後的博文中將對各種程序間通訊進行介紹。1 管道 2 命名管道 3 訊號 4 訊號量 5 訊息佇列 6 共享記憶體 7 套接字 在本文中,將對管道進行說明。一 管道 管道是unix ipc的最老形式,並且所有u n i x系統都提供此種通訊機...