#include <stdio.h>
#include <head.h>
int main(int argc, const char *argv[])
{
//创建有名管道1
if(mkfifo("./fifo",0664)<0)
{
if(errno !=17)
{
printf("%d\n",errno);
perror("mkfifo");
return -1;
}
}
printf("mkfifo success\n");
//创建有名管道2
if(mkfifo("./fifo1",0664)<0)
{
if(errno !=17)
{
printf("%d\n",errno);
perror("mkfifo");
return -1;
}
}
printf("mkfifo success\n");
//打开有名管道文件1
int fd = open("./fifo",O_RDONLY);
if(fd < 0)
{
perror("open");
return -1;
}
printf("open success fd=%d\n",fd);
//打开有名管道文件2
int fb = open("./fifo1",O_WRONLY);
if(fb < 0)
{
perror("open");
return -1;
}
printf("open success fd=%d\n",fb);
//从管道中读取数据,打印到终端
char buf[128]="";
ssize_t res=0;
while(1)
{
bzero(buf,sizeof(buf));
//当管道的读写端均存在,若管道中没有数据,则read函数阻塞
res= read(fd,buf,sizeof(buf));
if(res<0)
{
perror("read");
return -1;
}
if(res == 0 || strcmp(buf,"quit")==0)
{
printf("写端关闭\n");
break;
}
printf("res=%ld : %s\n",res,buf);
//从终端获取数据写入到管道中
char duf[128]="";
ssize_t ras=0;
printf("请输入>>>>");
fgets(duf,sizeof(duf),stdin);
duf[strlen(duf)-1]='\0';
if((ras=write(fb,duf,sizeof(duf)))<0)
{
perror("write");
return -1;
}
printf("写入数据成功");
}
close(fd);
close(fb);
return 0;
}
#include <stdio.h>
#include <head.h>
int main(int argc, const char *argv[])
{
//创建有名管道1
if(mkfifo("./fifo",0664)<0)
{
if(errno !=17)
{
printf("%d\n",errno);
perror("mkfifo");
return -1;
}
}
printf("mkfifo success\n");
//创建有名管道2
if(mkfifo("./fifo1",0664)<0)
{
if(errno !=17)
{
printf("%d\n",errno);
perror("mkfifo");
return -1;
}
}
printf("mkfifo success\n");
//打开有名管道文件1
int fd = open("./fifo",O_WRONLY);
if(fd < 0)
{
perror("open");
return -1;
}
printf("open success fd=%d\n",fd);
//打开有名管道文件2
int fb = open("./fifo1",O_RDONLY);
if(fb < 0)
{
perror("open");
return -1;
}
printf("open success fd=%d\n",fb);
//从终端获取数据,写入到管道中
char buf[128]="";
ssize_t res=0;
while(1)
{
printf("请输入>>>>");
fgets(buf,sizeof(buf),stdin);
buf[strlen(buf)-1]='\0';
if((res=write(fd,buf,sizeof(buf)))<0)
{
perror("write");
return -1;
}
printf("写入数据成功\n");
char duf[128]="";
ssize_t ras=0;
bzero(duf,sizeof(duf));
//当管道的读写段均存在,若管道中没有数据,则read函数阻塞
ras=read(fb,duf,sizeof(duf));
if(ras<0)
{
perror("read");
return -1;
}
if(ras == 0 || strcmp(duf,"quit")==0)
{
printf("写端关闭");
break;
}
printf("ras=%ld : %s\n",ras,duf);
}
close(fd);
close(fb);
return 0;
}