fifo1.c
#include<myhead.h>
int main(int argc, const char *argv[])
{
pid_t pid;//定义子线程号
pid =fork();
if(pid>0){
int fd1 =open("./fifo1",O_WRONLY);
if(fd1==-1)
{
perror("open");
return -1;
}
char buff[1024];
while(1)
{
// printf("父进程1写入管道1:\n");
int len =read(0,buff,sizeof(buff));//从输出入读取字符串放入buff
buff[len-1]='\0';
write(fd1,buff,len);//从buff写入fifo
if((strcmp(buff,"quit"))==0){
break;
}
}
// exit(EXIT_SUCCESS);
close(fd1);
}else if(pid == 0)
{
int fd2 =open("./fifo2",O_RDONLY);
if(fd2==-1)
{
perror("open");
return -1;
}
char buff[100];
while(1)
{
//printf("子进程1读取管道2:\n");
int len =read(fd2,buff,sizeof(buff));//从fifo2读取字符串到buff
write(1,buff,len);//从buff写入输出流
if((strcmp(buff,"exit"))==0){
break;
}
}
close(fd2);
// exit(EXIT_SUCCESS);
}
else{
perror("create\n");
return -1;
}
return 0;
}
fifo.2
#include<myhead.h>
int main(int argc, const char *argv[])
{
pid_t pid;//定义子线程号
pid =fork();
if(pid>0){
int fd2 =open("./fifo2",O_WRONLY);
if(fd2==-1)
{
perror("open");
return -1;
}
char buff[1024];
while(1)
{
// printf("父进程2写入管道2:\n");
int len =read(0,buff,sizeof(buff));//从输出入读取字符串放入buff
buff[len-1]='\0';
write(fd2,buff,len);//从buff写入fifo
if((strcmp(buff,"exit"))==0){
break;
}
}
// exit(EXIT_SUCCESS);
close(fd2);
}else if(pid == 0)
{
int fd1 =open("./fifo1",O_RDONLY);
if(fd1==-1)
{
perror("open");
return -1;
}
char buff[100];
while(1)
{
//printf("子进程1读取管道2:\n");
int len =read(fd1,buff,sizeof(buff));//从fifo2读取字符串到buff
write(1,buff,len);//从buff写入输出流
if((strcmp(buff,"quit"))==0){
break;
}
}
close(fd1);
// exit(EXIT_SUCCESS);
}
else{
perror("create\n");
return -1;
}
return 0;
}