FIFO通信的方式
来源:互联网 发布:如何使用大数据 编辑:程序博客网 时间:2024/05/10 22:18
/*fifl_read.c*/#include <sys/types.h>#include <sys/stat.h>#include <errno.h>#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include<sys/time.h>#include<unistd.h>#define FIFO "/tmp/myfifo" #define READ_DATA_LEN 4096main(int argc,char** argv){ char buf_r[READ_DATA_LEN]; int nIndex = 0; int fd; int nread; int nNum = 0; struct timeval tv; struct timezone tz;/*创建有名管道,并设置相应的权限*/ 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); } sleep(5); gettimeofday (&tv , &tz); printf("nIndex is %d, nNum = %d, tv_sec;TEST0 %d\n",nIndex, nNum, tv.tv_sec); printf("nIndex is %d,“nNum = %d, tv_usec;TEST0 %d\n",nIndex, nNum, tv.tv_usec); for(nIndex = 0; nNum < 1024 * 1024 * 1024; nIndex++) { memset(buf_r,0,sizeof(buf_r)); if((nread=read(fd,buf_r,READ_DATA_LEN)) <= 0){// if(errno==EAGAIN) // printf("no data yet\n"); } nNum += nread; } gettimeofday (&tv , &tz); printf("nIndex is %d,“nNumb = %d, tv_sec;TEST1 %d\n",nIndex, nNum, tv.tv_sec); printf("nIndex is %d,“nNumb = %d, tv_usec;TEST1 %d\n",nIndex, nNum, tv.tv_usec); pause(); unlink(FIFO);}
server.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" #define WRITE_DATA_LEN 4096main(int argc,char** argv)/*参数为即将写入的字节数*/{ int nIndex = 1; int fd; char w_buf[WRITE_DATA_LEN]; int nwrite;/*打开FIFO管道,并设置非阻塞标志*/ fd=open(FIFO,O_WRONLY|O_NONBLOCK,0); if(fd== -1) printf("open error; no reading process\n"); if(argc==1) printf("Please send something\n"); memset(w_buf, 1, sizeof(w_buf));while(nIndex++){/*向管道中写入字符串*/ if((nwrite=write(fd,w_buf, WRITE_DATA_LEN))== -1) {// printf("write fifo failed!\n");// if(errno==EAGAIN) // printf("The FIFO has not been read yet.Please try later\n"); }}printf("Write FIFO nIndex is %d\n", nIndex);}
阅读全文
0 0
- FIFO通信的方式
- linux进程间的通信方式:管道和FIFO
- Linux进程间通信方式----FIFO
- 进程间的通信-FIFO
- 进程间的通信 FIFO
- FIFO的数组实现方式
- FIFO通信 htonl 和memcpy的用法
- FIFO通信 htonl 和memcpy的用法
- UNIX进程间的通信 FIFO
- 进程间的通信----有名管道fifo
- Linux进程通信 FIFO
- 进程间通信-FIFO
- 进程间通信--FIFO
- 进程间通信-fifo
- 命名管道(FIFO) Linux进程进程间的通信之命名管道(FIFO)
- 高效FIFO串口双机通信在ARM7上的实现
- 进程间的通信(二)命名管道fifo
- 高效FIFO串口双机通信在ARM7上的实现 .
- 文章
- Tornado入门总结
- Java学习笔记
- B-树和B+树的应用:数据搜索和数据库索引
- 加载assets下的json串并用recyclerview显示
- FIFO通信的方式
- jsp文件里面跳转时的路径问题
- 关于Altium Designer一言不合就出现错误报告的解决方案
- 前端需要了解的 SSO 与 CAS 知识
- NOIP模拟 序列操作【线段树】
- 【训练】2017-11-7早
- 洛谷 3938 [NOIP模拟] 斐波那契 二分+找规律
- YTU.3149 搜索基础之马走日
- [bzoj4242][最小生成树]水壶