int main(int argc, const char *argv[])
{
if(mkfifo("./windows",0664)==-1)//挖下水道
{
perror("mkfifo");
return -1;
}
if(mkfifo("./mac",0664)==-1)//again
{
perror("mac");
return -1;
}
return 0;
}
1.
#include <myhead.h>
int main(int argc, const char *argv[])
{
int fd1 =open("./linux",O_WRONLY);//打开下水道扔点好东西
if(-1==fd1)
{
perror("fp1");
return -1;
}
printf("管道文件已经打开\n");
char wbuf[20]="";
while(1)
{
printf("请输入>>>");
fgets(wbuf,sizeof(wbuf),stdin);//收拾好东西
wbuf[strlen(wbuf)-1]=0;
write(fd1,wbuf,sizeof(wbuf));//扔进去
if(strcmp(wbuf,"quit")==0)
{
break;
}
}
close(fd1);
return 0;
}
#include <myhead.h>
int main(int argc, const char *argv[])
{
int fd3=open("./file.txt",O_WRONLY|O_APPEND|O_CREAT,0664);//放宝贝的仓库
if(-1==fd3)
{
perror("fd3");
return -1;
}
int fd2 =open("./linux",O_RDONLY);//下水道捡点宝贝
if(-1==fd2)
{
perror("fp2");
return -1;
}
printf("管道文件已经打开\n");
char rbuf[20]="";
while(1)
{
bzero(rbuf,sizeof(rbuf));//清空背包
read(fd2,rbuf,sizeof(rbuf));//开捞
if(strcmp(rbuf,"quit")==0)
{
break;
}
printf("收到信息为:%s\n",rbuf);//展示:Wa
write(fd3,rbuf,sizeof(rbuf));
}
close(fd3);
close(fd2);
return 0;
}
2.
#include <myhead.h>
int main(int argc, const char *argv[])
{ char rbuf[20]="";//吃工一号
char wbuf[20]="";//拿工二号
int fd1=open("./windows",O_WRONLY);//1号写管道
int fd2=open("./mac",O_RDONLY);//2号读管道
if(fd1==-1)
{
perror("fp1");
return -1;
}
printf("下水道通了\n");//马桶不堵了
if(fd2==-1)
{
perror("fd1");
return -1;
}
printf("我是河流之王\n");// me too
pid_t pid=fork();
if(pid>0)//老爹
{
while(1)
{
printf("请输入>>>");
fgets(wbuf,sizeof(wbuf),stdin);//标准输入写入容器wbuf中
wbuf[strlen(wbuf)-1]=0;//去掉字符串末尾fgets加上的\n
write(fd1,wbuf,sizeof(wbuf));//垃圾倒进管道里
if(strcmp(wbuf,"quit")==0)
{
break;
}
}
}
else if(pid==0)
{
while(1)
{
bzero(rbuf,sizeof(rbuf));//清空容器
read(fd2,rbuf,sizeof(rbuf));//拿管道2的垃圾
if(strcmp(rbuf,"quit")==0)//输入quit时结束罪恶的一生
{
break;
}
printf("%s\n",rbuf);//输出辣鸡
}
exit(EXIT_SUCCESS);//gg
}
waitpid(-1,NULL,0);//尸体拿来吧你
close(fd1);
close(fd2);//你懂得
return 0;
}
#include <myhead.h>
int main(int argc, const char *argv[])
{
//与上文内容一致 1:1复刻 ,看不懂的看看上边就完事了:Wa
char rbuf[20]="";
char wbuf[20]="";
int fd1=open("./windows",O_RDONLY);
int fd2=open("./mac",O_WRONLY);
if(fd1==-1)
{
perror("fp1");
return -1;
}
printf("下水道通了\n");
if(fd2==-1)
{
perror("fd2");
return -1;
}
printf("黑暗好像一颗巨石\n");
pid_t pid=fork();
if(pid>0)
{
while(1)
{
bzero(rbuf,sizeof(rbuf));
read(fd1,rbuf,sizeof(rbuf));
if(strcmp(rbuf,"quit")==0)
{
break;
}
printf("%s\n",rbuf);
}
}
else if(pid==0)
{
while(1)
{
printf("请输入>>>");
fgets(wbuf,sizeof(wbuf),stdin);
wbuf[strlen(wbuf)-1]=0;
write(fd2,wbuf,sizeof(wbuf));
if(strcmp(wbuf,"quit")==0)
{
break;
}
}
exit(EXIT_SUCCESS);
}
waitpid(-1,NULL,0);
close(fd1);
close(fd2);
return 0;
}