IO(8.28)

有名管道,创建两个发送接收端,父进程写入管道1和管道2,子进程读取管道2和管道1

#include<myhead.h>
int main()
{
   int send,rev;
   if(send=open("./my_fifo1",O_RDONLY)==-1)
   {
	   perror("open");
	   return -1;
   }
   if(rev=open("./my_fifo2",O_WRONLY)==-1)
   {
	   perror("open");
	   return -1;
   }
   pid_t pid;
   pid=fork();
   char buff[1024];
   char arr[1024];
   if(pid>0)
   {
	while(1)
{
     int len= read(0,buff,sizeof(buff));
	 write(send,buff,len);
	 sleep(3);
	 if(strcmp(buff,"quit")==0)
	 {
		 break;
	 }
}
   }
   else if(pid==0)
   {
      while(1)
	  {
		  sleep(3);
		  int len =read(rev,arr,sizeof(arr));
		  write(1,arr,len);
		  if(strcmp(buff,"quit")==0)
		  {
			  break;
		  }
	  }
   }
else
{
	perror("打开失败");
	exit(EXIT_FAILURE);
}
close(send);
close(rev);
return 0;
}

      

 

#include<myhead.h>
int main()
{
   int send,rev;
   if(send=open("./my_fifo1",O_WRONLY)==-1)
   {
	   perror("open");
	   return -1;
   }
   if(rev=open("./my_fifo2",O_RDONLY)==-1)
   {
	   perror("open");
	   return -1;
   }
   pid_t pid;
   pid=fork();
   char buff[1024];
   char arr[1024];
   if(pid>0)
   {
	while(1)
{
     int len= read(0,buff,sizeof(buff));
	 write(rev,buff,len);
	 sleep(5);
	 if(strcmp(buff,"quit")==0)
	 {
		 break;
	 }
}
   }
   else if(pid==0)
   {
      while(1)
	  {
		  sleep(5);
		  int len =read(send,arr,sizeof(arr));
		  write(1,arr,len);
		  if(strcmp(buff,"quit")==0)
		  {
			  break;
		  }
	  }
   }
else
{
	perror("打开失败");
	exit(EXIT_FAILURE);
}
close(send);
close(rev);
return 0;
}

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值