如何科学养一只鸽子为你飞鸽传书——程序间异步通信_莫韵乐的Linux英雄传
如何科学养一只鸽子为你飞鸽传书——程序间异步通信
程序间异步通信——其本质都只是将信息从A端到B端的传递,只要通信双方都做好发出信息和接收信息的准备就可以实现飞鸽传书
接下来看一下怎样如何科学养一只鸽子为你飞鸽传书
鸽子是个啥?(什么是有名管道)
头文件 | #include<sys/types.h> |
#include<sys/stat.h> | |
原型 | int mkfifo(const char *pathname, mode_t mode) |
功能 | 创建有名管道 |
参数 | pathname: 有名管道文件的路径名 |
mode:管道文件访问权限 | |
返回值 | 成功:返回管道文件描述符 |
失败:-1 | |
备注 | FIFO文件的数据始终存储在内存中,关闭FIFO文件后,数据清空,故大小始终为0 |
怎么科学养鸽子?(如何创建有名管道)
创建有名管道的两种方法 | 在命令行创建:mkfifo -m [权限] [管道名] |
在程序中调用库函数:mkfifo(“[管道名]”, [权限]); |
如何进行飞鸽传书?(如何在程序里面使用有名管道)
把鸽子从笼子拿出来(头文件)
要使用有名管道必须添加以下库文件,其他库文件酌情添加(总觉得好像在说调味料)
#include<sys/types.h>#include<sys/stat.h>
给鸽子起个名字(确定FIFO的名字和权限)
在程序中调用mkfifo函数:mkfifo(“[管道名]”, [权限]);
mkfifo("rw_fifo",0777);
让鸽子起飞(打开管道文件)
跟我们平时打开文件的方法是一样的,这里我们使用可读写方式打开
fd=open("rw_fifo",O_RDWR);
让鸽子送信(将数据写入管道文件)
fd决定了那一只鸽子去送信
wbuf决定了信的内容
20表示信的大小
write(fd,wbuf,20);
从鸽子上把信拿出来(从管道文件读出数据)
fd决定了那一只鸽子去送信
rbuf用来抄录fifo文件里面的内容
20表示表示要抄多少下来
read(fd,rbuf,20);
将鸽子关回笼子里(关闭管道文件)
这里就相当简单了,普通的文件我普通地关
close(fd);
接下来我们就开始编写一个使用实现程序间异步通讯的例子
想要实现来回送信,我们就需要用到两只鸽子,那么我们就开始写吧!
首先找到鸽子笼
#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>#include <stdlib.h>#include <unistd.h>#include <stdio.h>
然后准备好书信
char wbuf[20];char rbuf[20];
如何写信(多种方法)
wbuf = "hello.A";//定义字符串fgets(wbuf,20,stdin);//从屏幕输入read(fd_file,wbuf,20);//从文件中读取
给两个鸽子起个名字
mkfifo("1w2rfifo",0777);mkfifo("1r2wfifo",0777);
让鸽子起飞
int fd[2];if( (fd[0]=open("1w2rfifo",O_RDWR)) <0){perror("wfifo打开失败");exit(1);}if( (fd[1]=open("1r2wfifo",O_RDWR)) <0){perror("rfifo打开失败");exit(1);}
如何将信放进去,把信拿出来
write(fd[0],wbuf,20);//将信放进去read(fd[1],rbuf,20);//把信拿出来
让鸽子996般地不断来回送信
while里面增设退出条件,尽可能地考虑通信双方是否能同时退出程序
while(*wbuf != 'q' || *rbuf != 'q'){//q为退出信息/*代码实现*/}
如何报信(多种方法)
fputs(rbuf,stdout);//输出到屏幕write(fd_file,rbuf,20);//输出到文件printf(rbuf);//打印输出到屏幕
在最后,将鸽子关回笼子里
close(fd[0]);close(fd[1]);
以下是程序的效果:
A端发送信息,B端接收,接着B端发信息,A端接收
当A端输入退出信息q时,B端收到了q,然后B端将退出信息q发送回去后,A接收到q的信息,两个程序同时退出。
如果觉得这篇文章还不错的话,就点个赞收藏分享一下,感谢您的观看
看完实现异步通信,不妨再来看看底层I/O操作和标准I/O操作吧!
文件底层I/O基本操作——东写西读南开北关中位移_莫韵乐的Linux英雄传
文件标准I/O基本操作——FX乐曲时代_莫韵乐的Linux英雄传
如何科学养一只鸽子为你飞鸽传书——程序间异步通信_莫韵乐的Linux英雄传相关推荐
- 如何高效放鸽子——线程的创建_莫韵乐的Linux王国
如何高效放鸽子--线程的创建.等待和销毁 前文再续,书接上一回 今天我们将会采访一位放鸽子高手,探讨如何高效地放放鸽子 记者:您好,真是百闻不如一见,没想到传说中的鸽王相貌平平却有如此大的能耐 鸽王: ...
- 只靠自己的飞鸽传书想象和推断
没有数据,没有依据,只靠自己的 飞鸽传书 想象和推断,往往只能算一种意淫,想象这个市场是多么的赚钱,自我感觉自己的产品就是比别人做的都好.即使市场前景真的无限好,给个理由为什么一定是你的?10 价值 ...
- 在探索的飞鸽传书科学的道路上
这时母亲并没有慌乱而是对自己的女儿说,在探索的飞鸽传书科学的道路上,雨水滴在衣服上,站第一排,偃旗息鼓和大器晚成,未来的衣服还不用洗绦呢,这种衣服不的面料上涂着一层化学污剂,共营生命绿色吧,我累了. ...
- 世上的人大都只会“飞鸽传书下载”,没人开发
当我上大学的时候,高级飞秋局域网聊天也曾是我的目标.当时,我通过等级考试获得了高级飞秋局域网聊天证书,并在自己的名片上印上"高级飞秋局域网聊天"的字样.后来,我的水平提高了,似乎也 ...
- 文件底层I/O基本操作——东写西读南开北关中位移_莫韵乐的Linux英雄传
文件I/O基本操作--东写西读南开北关中位移 Linux王国曾经有那么一个风起云涌的年代,而在那一个年代里就有那么五位人中龙凤掀起无数的波澜,人们称他们为东写西读南开北关中位移 在Linux的文件操作 ...
- linux从当前目录打开fx,文件标准I/O基本操作——FX乐曲时代_莫韵乐的Linux英雄传...
文件标准I/O基本操作--FX乐曲时代 在Linux王国的和平年代里,优秀的函数们纷纷踏上了成为直播网红的不归路,造就了最为辉煌的FX乐曲时代 在Linux的文件操作中标准I/O操作与底层I/O操作的 ...
- 文件标准I/O基本操作——FX乐曲时代_莫韵乐的Linux英雄传
文件标准I/O基本操作--FX乐曲时代 在Linux王国的和平年代里,优秀的函数们纷纷踏上了成为直播网红的不归路,造就了最为辉煌的FX乐曲时代 在Linux的文件操作中标准I/O操作与底层I/O操作的 ...
- 用鸽 计算机教案,科学活动教案:鸽子
科学:鸽子 大班:科学<鸽子> 一.主题的产生 一天,朱老师买来了几只鸽子准备放到幼儿园的饲养角里, 在经过我们班时,就给我们班孩子看了看,问他们认不认识,孩子们一看,都非常兴奋,异口同声 ...
- 这届铲屎官不错,既舍得花钱,又会科学养猫养狗
硅谷Live / 实地探访 / 热点探秘 / 深度探讨 想必大家前两天都看到这么一则社会新闻: 杭州一个叫 "Saya" 的网红,出门遛狗未拴狗绳,导致狗扑向一位孕妇.孕妇丈夫情急 ...
最新文章
- CVPR 2018 DEDT:《Efficient Diverse Ensemble for Discriminative Co-Tracking》论文笔记
- java 切面 不执行,解决springboot的aop切面不起作用问题(失效的排查)
- 为什么Linux下的环境变量要用大写而不是小写
- AI一体机高速自由流收费稽核解决方案
- thinkPHP6.0 控制器请求方法延迟生效解决办法
- openssl生成证书
- CCF202109-1 数组推导
- Nand Flash数据存储单元的整体架构
- php 正则表达式获取html标签内容_总结Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)...
- php怎么加一个透明的菜单栏,window_PHP制作下拉透明菜单,下拉透明菜单
script language= - phpStudy...
- 韩国瑜会见陆委会主委陈明通:别给高雄念紧箍咒
- 全屏动态滑稽网站HTML源码
- 电脑网线连接无线路由扩展设置
- 万里长城这么修,可真鹅戏
- latex大括号 多行公式_使用数组公式一步搞定公式批量计算,让效率提高数十倍...
- 如何设计群发系统消息表
- 关于python中的模块的定义、使用、优点及其使用cpy文件的介绍 简单易懂
- 数据泄露的原因是什么?如何保护数据安全?
- #ifndef的神仙用法
- 2020年李永乐线性代数强化笔记-特征值、特征向量与二次型
热门文章
- mysql安装卸载服务_windows下安装、卸载mysql服务的方法(mysql 5.6 zip解
- 2011年年初网上最新最火的36个段子
- python贴吧顶贴_Python Selenium使用——豆瓣顶贴(帖?)
- mysqlyog mysql8.012_瑞昱网卡驱动-Realtek瑞昱RTL-81xx系列网卡驱动(Win8)8.012.0304.2013版-东坡下载...
- 河工大大一c语言题库,河工大二级C语言题库.doc
- CentOS Out of Memery问题分析
- 使用Console线进入Uboot通过TFTP切换AP工作模式
- 关于ot.bregman
- 安装软件更新出错提示_博梦软件管家安装解压出错解决办法
- 北大青鸟课程与思科等其它IT培训课程的区别