linux 管道编程
2013-05-21 08:57 夏洛克·福尔摩斯 阅读(217) 评论(0) 编辑 收藏 举报//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(); }
技术成就现在,眼光着看未来。