Linux下管道的实现

<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
运用管道知识做了单工通信的程序
pipeA.c代码如下:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
int main()
{
    char name[20]="first.pipe";
    char buff[256];
    int r;
    int fd;
    //创建管道
     r=mkfifo(name,0666);
    if(-1==r)printf("mkfifo error%m\n"),exit(-1);
    printf("mkfido %m\n");
    //打开管道
    fd=open(name,O_RDONLY);
    if(-1==fd)printf("open error %m\n"),unlink(name),exit(-1);
    printf("open %m\n");
    while(1)
  {
     r=read(fd,buff,sizeof(buff)-1);
     if(r>0)
   {
      buff[r]=0;
      printf(">>>%s\n",buff);
   }
  }
    return 0;
}

pipeB.c代码如下:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
int main()
{
    char name[20]="first.pipe";
    int r;
    char buff[256];
    int fd;
    //打开管道
    fd=open("/root/first.pipe",O_WRONLY);
    if(-1 == fd) printf("open error:%m\n"),unlink(name),exit(-1);
    printf("open %m\n");
    while(1)
  {
    r=read(0,buff,256);
    if(r>0)
    {
      write(fd,buff,r);
    }
  }
   return 0;
}

运行成功,由于时间关系 图片就没发了
欢迎提问,做的不好的谢谢指出^-^....

你可能感兴趣的:(linux,管道)