#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通...