zoukankan      html  css  js  c++  java
  • linux 管道编程

    //fifo_read.c
    
    #include<sys/types.h>
    #include<sys/stat.h>
    #include<errno.h>
    #include<fcntl.h>
    #include<stdio.h>
    #include<stdlib.h>
    #define FIFO_SERVER "/tmp/myfifo"
    
    main(int argc,char **argv)
    {
    int fd;
    char w_buf[100];
    int nwrite;
    
    fd=open(FIFO_SERVER,O_WRONLY|O_NONBLOCK,0);
    
    if(argc==1)
    {
    printf("please send something\n");
    exit(-1);
    }
    strcpy(w_buf,argv[1]);
    if((nwrite=write(fd,w_buf,100))==-1)
    {
    if(errno==EAGAIN)
          printf("the fifo has not been read yet.please try later\n");
    
    }
    else
    printf("write %s to the fifo\n",w_buf);
    }
    //fifo_write.c
    #include<sys/types.h>
    #include<sys/stat.h>
    #include<errno.h>
    #include<fcntl.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define FIFO "/tmp/myfifo"
    
    main(int argc,char **argv)
    {
    char buf_r[100];
    int fd;
    int nread;
    
    if((mkfifo(FIFO,O_CREAT|O_EXCL)<0)&&(errno!=EEXIST))
    printf("cannot create fifoserver\n");
    
    printf("preparing for reading bytes...\n");
    memset(buf_r,0,sizeof(buf_r));
    
    fd=open(FIFO,O_RDONLY|O_NONBLOCK,0);
    if(fd==-1)
    {
    perror("open");
    exit(1);
    }
    while(1)
    {
    memset(buf_r,0,sizeof(buf_r));
    if((nread=read(fd,buf_r,100))==-1)
    {
        if(errno==EAGAIN)
            printf("no data yet\n");
    
    }
    printf("read %s from FIFO\n",buf_r);
    sleep(1);
    
    }
    pause();
    
    }
    技术成就现在,眼光着看未来。
  • 相关阅读:
    for 循环/ while 循环/ do-while 循环
    让元素脱离动画流
    缓存布局信息
    一个程序员的管理心得
    CenOS下Tomcat外网不能访问
    卸载CentOS自带的JDK并配置指定JDK环境变量
    Linux系统安装Mysql
    系统的非功能性需求
    做软件的追求
    路途小歇
  • 原文地址:https://www.cnblogs.com/sherlockhomles/p/3090085.html
Copyright © 2011-2022 走看看