有名管道
来源:互联网 发布:联通软件研究院怎么样 编辑:程序博客网 时间:2024/04/30 02:09
//命名管道特点://1.如果打开管道的一方仅以读或写的方式打开管道,必须需要另一方的介入,管道才能打开//双方都调用open//可以一方打开,以读写的方式打开open(DEF_FIFO_PATH,O_RDWR)//发送少量简单无格式的数据//双方读写都存在,才能打开管道//计时性存储数据//2.存在的文件//3.单向写入,单向写出//问答形式#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <errno.h>#include <fcntl.h>#define DEF_FIFO_PATH ("./FIFO")#define DEF_STD_ERROR (-1)int main(int argc,char *argv[]){ int ret; int fd; char str[1024]; //if argv[1] > 0,writer if(atoi(argv[1])>0){ret = mkfifo(DEF_FIFO_PATH,S_IWUSR | S_IRUSR);if(ret == DEF_STD_ERROR){if(errno == EEXIST){printf("Fifo always exist\n");}else{printf("%d\n",strerror(errno));return -1;}}//open fifofd = open(DEF_FIFO_PATH,O_WRONLY)//O_WRONLY紧以读的方式打开,两个进程if(fd == DEF_STD_ERROR){printf("%d\n",strerror(errno));//delete pipe打开失败删除文件(管道)unlink(DEF_FIFO_PATH);return -1;}//writewhile(1){printf("Please input string:\n");scanf("%s",str);write(fd,str,strlen(str)+1);if(!strcmp(str,"goodbye")){break;}}//close fifoclose(fd);} else {//if argv[1] <= 0,reader//check fiforet = access(DEF_FIFO_PATH,W_OK);if(ret == DEF_STD_ERROR){printf("%d\n",strerror(errno));return -1;}//open fifofd = open(DEF_FIFO_PATH,O_RDONLY);if(fd == DEF_STD_ERROR){printf("%d\n",strerror(errno));return -1;}//read fifowhile(1){read(fd,str,sizeof(str));printf("Receive data:[%s]\n",str);if(strcmp("goodbye",str)==0){break;}}//close fifoclose(fd);} return 0;}
0 0
- 有名管道
- 有名管道
- 有名管道
- 有名管道
- 有名管道
- 有名管道
- 有名管道
- 有名管道
- 有名管道
- 有名管道
- 有名管道
- 有名管道
- 有名管道
- 有名管道
- 有名管道
- 有名管道
- 有名管道
- 管道和有名管道
- [剑指offer]数字在排序数组中出现的次数
- 匿名管道
- webStorm 3.0配置使用主题背景色等
- JAX-RS的参考实现:《使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务》
- poj 1269 Intersecting Lines
- 有名管道
- java多线程(对象和变量的并发访问)
- 信号
- sql server中的 SET NOCOUNT ON 的含义
- 提高C++程序运行效率的10个简单方法
- 共享内存
- 剑指Offer 面试题40:数组中只出现一次的两个数 题解
- 消息队列
- hdu 2459 后缀数组 求最多重复次数子串