云计算人才要会哪些技能 怎么学Linux匿名管道

  云计算人才要会哪些技能?怎么学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容器技术等。如果你想快速掌握这些技能,可以选择专业的学习。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值