一、二、
create.c
#include <myhead.h>
int main(int argc, char const *argv[])
{
if(mkfifo("./linux",0664)==-1)
{
perror("mkfifo error");
return -1;
}
getchar();
system("rm linux");
return 0;
}
snd.c
#include <myhead.h>
int main(int argc, char const *argv[])
{
//以写的方式打开管道文件
int wfd = open("./linux",O_WRONLY);
if(wfd == -1)
{
perror("open error");
return -1;
}
printf("管道文件已经打开\n");
//发送数据
char wbuf[128]="";
while(1)
{
printf("请输入----->");
fgets(wbuf,sizeof(wbuf),stdin);
wbuf[strlen(wbuf)-1]=0;
//将数据发送到管道中
write(wfd,wbuf,strlen(wbuf));
//判断数据
if(strcmp(wbuf,"quit")==0)
{
break;
}
}
close(wfd);
return 0;
}
rev.c
#include <myhead.h>
int main(int argc, char const *argv[])
{
//以读的方式打开文件
int rfd = open("./linux",O_RDONLY);
//以写的方式打开文件
int wfd = open("./linux.txt",O_WRONLY|O_CREAT|O_TRNUC,0777);
if(rfd==-1)
{
perror("open error");
return -1;
}
//printf("管道读端打开\n");
//定义接受容器
char rbuf[128]="";
while(1)
{
bzero(rbuf,sizeof(rbuf));
//读取数据
read(rfd,rbuf,sizeof(rbuf));
write(wfd,rbuf,strlen(rbuf));
if(strcmp(rbuf,"quit")==0)
{
break;
}
printf("收到的消息为:%s\n",rbuf);
}
//关闭文件描述符
close(rfd);
return 0;
}