网站首页 > 教程分享 正文
如何快速掌握云计算技能?Linux匿名管道怎么回事?近日阿里巴巴、腾讯相继披露最新一季财报,云计算(企业服务)板块依旧保持高增速。云计算产业的迅猛发展催生了大量的人才需求,为了能够快速的入行,很多人选择专业学习。接下来小编就给大家分享云计算入门学习中有关Linux匿名管道的知识点。
什么是管道呢?
管道实际上就是内核中的一块缓冲区,通过进程从管道中放数据,取数据来完成进程中数据资源的传输。管道的特点是:单向通信,也就是说传输数据的一方,就只能传输数据,接收数据就只能接收数据。
匿名管道,就是没有名字的管道,没有名字两个不相干的进程是无法传输数据的。所以匿名管道的适用范围就是父子进程等有亲缘关系的进程间通信。
匿名管道特点
1)管道是半双工单向通信(即数据只能在一个方向上流动),具有固定的读端和写端。需要双方通信时,需要建立两个管道;
2)只能用于具有亲缘关系的进程之间的通信(父子进程或者兄弟进程之间);通常,一个管道由一个进程创建,然后该进程调用fork,此后父子进程之间就可应用该管道;
3)生命周期随进程,进程退出,管道释放;
4)面向字节流;
5)可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write 等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。
如何创建和使用匿名管道?
创建管道
函数原型:
BOOLWINAPICreatePipe(
PHANDLEhReadPipe,
PHANDLEhWritePipe,
LPSECURITY_ATTRIBUTESlpPipeAttributes,
DWORDnSize
);
函数说明:
第一个参数返回新创建的管道的读取端句柄;
第二个参数返回新创建的管道的写入端句柄。注意不能在管道的读取端写入数据也不能在写入端读取数据;
第三个参数表示管道的安全属性,通常可以作如下设置:
SECURITY_ATTRIBUTES sa;
sa.nLength
= sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor
= NULL;
sa.bInheritHandle
= TRUE;
第四个参数表示管道的缓冲区容量,为0表示使用默认大小。函数执行成功返回TRUE,否则返回FALSE。
从管道中读取数据
函数原型:
BOOLReadFile(
HANDLEhFile,
LPVOIDlpBuffer,
DWORDnNumberOfBytesToRead,
LPDWORDlpNumberOfBytesRead,
LPOVERLAPPEDlpOverlapped
);
函数说明:
第一个参数为句柄,可以是创建文件函数CreateFile()的返回值也可以是管道;
第二个参数是一个指向缓冲区的指针,函数将读取的数据写入该缓冲区;
第三个参数的表达非常好,光从名字上就可以知道这是用来指定读取的字节数;
第四个参数将返回实际读取到的字节数;
第五个参数是用于异步操作方面,一般传入NULL即可。
向管道写入数据
函数原型:
BOOLWriteFile(
HANDLEhFile,
LPCVOIDlpBuffer,
DWORDnNumberOfBytesToWrite,
LPDWORDlpNumberOfBytesWritten,
LPOVERLAPPEDlpOverlapped
);
函数说明:
第一个参数为句柄,可以是创建文件函数CreateFile()的返回值也可以是管道。
第二个参数是一个指针,该指针指向待写入管道的数据。
第三个参数表示要写入的字节数。
第四个参数将返回实际写入管道的字节数。
第五个参数是用于异步操作方面,一般传入NULL即可。
关闭管道的一端
函数原型:BOOLCloseHandle(HANDLEhObject);
函数说明:当读取和写入端都关闭后,系统会关闭管道并回收资源。
一个合格的云计算人才需要掌握很多技能,比如Linux、网络工程师、Python运维、云计算、OpenStack、Doctor容器技术等。如果你想快速掌握这些技能,可以选择专业的学习。
猜你喜欢
- 2024-10-20 DPDK深度解析:EAL的线程初始化代码解析
- 2024-10-20 C++进程间通信--命名管道通信代码实现及其原理图示
- 2024-10-20 自动化运维开发日志: 升级到DC域控制器
- 2024-10-20 Oracle PL/SQL进阶编程(第七弹:使用系统包:DBMS_PIPE)
- 2024-10-20 6000+字,30+张图。JAVA线上故障排查全套路总结
- 2024-10-20 攻击中东地区的DNSpionage活动分析
- 2024-10-20 react 最新版本解决了什么问题 加了哪些东西
- 2024-10-20 java并发编程之进程与线程(java线程并发工具类)
- 2024-10-20 记一次 .NET某汽车零件采集系统 卡死分析
- 2024-10-20 Net 高级调试之七:线程操作相关命令介绍
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)