FIFO实现客户端服务器端通信
FIFO解决了在进程通信的时候产生大量临时文件的问题,并且可以实现非血缘关系进程间的通信,而且可以保留给后来的进程使用。
FIFO的读写规则和匿名管道的读写规则相似,不过FIFO保存在磁盘上,而匿名管道保存在内存里。
当FIFO的写进程关闭的时候,会向FIFO的读进程发送一个文件结束符。
客户端:
#include<stdio.h>#include<unistd.h>#include<sys/stat.h>#include<sys/types.h>#include<fcntl.h>#include<string.h>int main(){char* msg = "Hello, i am client!\n";int fd = open("./fifo1",O_WRONLY);int i = 0;for(;i<10;i++){printf(msg);if(write(fd,msg,strlen(msg)+1)<0){_exit(-1);}sleep(2);}close(fd);return 0;}
服务器端:
#include<stdio.h>#include<unistd.h>#include<sys/stat.h>#include<sys/types.h>#include<fcntl.h>#include<string.h>int main(){int fd = open("./fifo1",O_RDONLY);int i = 0;char buf[24]={0};while(read(fd,buf,24)>0){printf(buf);}close(fd);return 0;}


浙公网安备 33010602011771号