简单的实现在有名管道里,进程间的通信(非阻塞)。
2016-11-22 10:16
429 查看
/*fifo_write.c*/
#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #include <fcntl.h> #include <memory.h> #include <stdlib.h> #include <unistd.h> #define FIFO_SEVER "/tmp/fifosever" int main(int argc,char *argv[]) { int fd; char w_buf[4096*2]; int real_wnum; memset(w_buf,0,4096*2); if((mkfifo(FIFO_SEVER,O_CREAT|O_EXCL) < 0) && (errno != EEXIST)) { printf("cannt create fifosever!\n"); exit(0); } fd = open(FIFO_SEVER,O_WRONLY|O_NONBLOCK); if(fd == -1) { if(errno == ENXIO) printf("open error,no reading process\n"); } scanf("%s",w_buf); real_wnum = write(fd,w_buf,2048); if(real_wnum == -1) { if(errno == EAGAIN) { printf("write to fifo error try later!\n"); } } else { printf("real write num is %d\n",real_wnum); } return 0; }
/*fifo_read.c*/
#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #include <fcntl.h> #include <stdlib.h> #include <memory.h> #define FIFO_SEVER "/tmp/fifosever" int main(int argc,char **argv) { char r_buf[4096*2]; int fd; int r_size; int ret_size; r_size = atoi(argv[1]); printf("requore real read bytes %d\n",r_size); memset(r_buf,0,sizeof(r_buf)); fd = open (FIFO_SEVER,O_RDONLY|O_NONBLOCK); if(fd == -1) { printf("open %s for read error!\n"); exit(0); } while(1) { memset(r_buf,0,sizeof(r_buf)); ret_size = read(fd,r_buf,r_size); if(ret_size == -1) { if(errno == EAGAIN) printf("no data avalible\n"); } printf("real read bytes %d\n",ret_size); sleep(1); } pause(); unlink(FIFO_SEVER); return 0; }
相关文章推荐
- Linux下的有名管道(05)---使用两个管道实现两个进程之间的通信(对讲机模式)
- Linux进程通信 有名管道实现守护进程
- Linux下的有名管道(06)---使用两个管道实现两个进程之间的通信(手机模式)
- C++ 进程间的通讯(一):简单的有名管道实现
- 【转】C++ 进程间的通讯(一):简单的有名管道实现
- linux中利用有名管道实现进程之间的通信
- 简单的实现,在无名管道里父子进程间的通信(大小写的转换)
- 利用有名管道实现进程间的通信
- linux进程间通过管道通信实现简单的tftp
- 使用管道实现进程间的双向通信
- 应用管道实现父子进程之间的通信
- 采用虚拟命名管道的字符设备和阻塞型I/O实现进程间的通信实现KWIC程序
- 利用有名管道&无名管道 实现 简单的多人聊天
- (FIFO)有名管道在无亲缘进程间的通信
- 采用虚拟命名管道的字符设备和阻塞型I/O实现进程间的通信实现KWIC程序
- 利用命名管道实现进程之间的通信 .........
- 有名管道在无亲缘进程间的通信
- 两个有名管道实现qq通信 续
- 利用命名管道实现进程之间的通信 .........