無名管道mkfifo 建立fifo1

2021-10-23 18:01:10 字數 1059 閱讀 9216

#include 

#include 

#include 

#include 

#include 

#include 

#include 

int main (void)

int len =0;

char buf[100];

memset(buf, 0,sizeof(buf));//定義從fifo裡面讀的資料的緩衝

int fd = open ("fifo1",o_rdonly);//以唯讀方式開啟

while ((len = read(fd,buf,sizeof(buf))>0))//a如果read所讀的fd所指檔案提前管壁,那麼返回負數;

{                                           //這裡為什麼會等待writefifo寫完,不會搶占fifo嗎

printf("%s\n",buf);

memset(buf, 0,sizeof(buf));

printf("%d\n",len);

close(fd);

return 0;

#include 

#include 

#include 

#include 

#include 

#include 

#include 

int main (void)

int len =0;

char buf[100];

memset(buf, 0,sizeof(buf));

int fd = open ("fifo1",o_wronly);

while (1)

// scanf("%s",buf);

read(stdin_fileno,buf,sizeof(buf));

if(buf[0]=='0')

break;

write(fd,buf,strlen(buf));

memset(buf, 0,sizeof(buf));

close(fd);

return 0;

mkfifo 建立命名管道

mkfifo是乙個建立實名管道的函式 建立命名管道的方法為 mkfifo pipe。這樣就能建立乙個命名的管道pipe。表頭檔案 include include 定義函式 int mkfifo const char pathname,mode t mode 函式說明 mkfifo 會依引數pathn...

mkfifo函式建立有名管道

pipe建立的管道只能在具有共同祖先的程序間通訊,而mkfifo能在不相關的程序間交換資料。通俗舉例來說,乙個在乙個c檔案中通訊,乙個可在多個c檔案中通訊。命名管道開啟的規則 為讀開啟fifo o nonblock disable 阻塞直到有相應程序為寫而開啟fifo o nonblock enab...

linux管道(無名管道)

首先管道是程序之間的乙個單向資料流,它的資料流向由核心管理,只能從乙個程序流向另外乙個程序,乙個程序向管道寫入資料,另外乙個程序從這個管道讀取資料。在使用管道 無名管道 時,只能用在父子程序或者親屬程序之間,若要用在任意程序之間則需要使用fifo 有名管道 如圖程序ab通過管道進行資料交換。程序a通...