• linux 管道通信


      下面举linux下有名管道通信的代码。

    -----------------------------------------

    fifo_read.c

    ===========

    #include<errno.h>
    #include<stdio.h>
    #include<memory.h>
    #include<sys/types.h>
    #include<sys/stat.h>
    #include<fcntl.h>
    #define FIFO "myfifo"

    int main(void)
    {
    int fd;
    int num;
    char buff[100];
    if(access(FIFO,F_OK) == -1)
    {
    mkfifo(FIFO,0777);
    }
    fd = open(FIFO,O_RDONLY|O_NONBLOCK);
    if(fd < 0)
    {
    printf("open fifo error:%s ",strerror(errno));
    }
    printf("open fifo fd=%d ",fd);
    while(1)
    {
    num=0;
    memset(buff,'',100);
    num=read(fd,buff,100);
    if(num<0)
    {
    printf("read fifo:%s ",strerror(errno));
    }
    else if(num==0)
    {
    printf("no data to read. ");
    }
    else
    {
    printf("read [%d] bytes in fifo,it is [%s]. ",num,buff);
    }
    sleep(1);
    }
    return 0;
    }

    ----------------------

    fifo_write.c

    ==========

    #include<stdio.h>
    #include<fcntl.h>
    #include<memory.h>
    #include<sys/types.h>
    #include<sys/stat.h>
    #include<fcntl.h>
    #define FIFO "myfifo"

    int main(void)
    {
    int fd;
    char buff[100];
    int num =0;
    if(access(FIFO,F_OK)== -1)
    {
    mkfifo(FIFO,0777);
    }
    fd = open(FIFO,O_WRONLY);
    if(fd < 0)
    {
    printf("open fifo error! ");
    }
    printf("open file fd=%d ",fd);
    while(1)
    {
    memset(buff,'',100);
    num=0;
    printf("please write less than 100 letters: ");
    scanf("%s",buff);
    num= write(fd,buff,strlen(buff));
    printf("[%d] letters is written,it is [%s] ",num,buff);
    sleep(1);
    }
    return 0;
    }

  • 相关阅读:
    Java实现二叉排序树
    servlet/filter/listener/interceptor区别与联系
    Java中创建对象的5种方式
    字符串练习
    成员变量、类变量、局部变量的区别
    强制清除gradle 缓存
    XML
    jQuery
    JavaScript
    CSS
  • 原文地址:https://www.cnblogs.com/sunzl1987/p/4571775.html
Copyright © 2020-2023  润新知