2

命名管道(命名管道和匿名管道)

一、命名管道的原理 命名管道又称FIFO(first-in first-out),它是一种进程间通信的机制,允许不相关的进程之间进行通信,也可以被当作一种特殊的文件,可以简单理解为一种消息队列,双端打开的文件,可以理解为是一

一、 命名管道的原理

命名管道又称FIFO(first-in first-out),它是一种进程间通信的机制,允许不相关的进程之间进行通信,也可以被当作一种特殊的文件,可以简单理解为一种消息队列,双端打开的文件,可以理解为是一根管子,写在一头,读在另一头,可以把数据在内核态空间写入管道,然后在用户态读取出来。

二、 命名管道的分类

1.\t有名管道:也称FIFO,它是一种匿名管道的特殊形式,也就是说,当发送端关闭时,接收端仍可以读取到从发送端发出的消息。它可以用文件系统的路径名称标识,任何进程可以打开,读写管道,读写的方式与文件的读写完全一样,它的一个重要特征是数据在管道中可以存储一段时间,供后续的进程读取,有名管道的优点是在无名管道的基础上加上了亲缘关系的概念,两个相关进程可以通过它来进行通信。

2.\t无名管道:数据从入口推到出口时,会保持先入先出此顺序,无名管道也被称做匿名管道,它只能在具有亲缘关系的进程之间使用,它没有文件系统的话路径所标识,也不能保存多通道的数据,所以它的使用范围比有名管道小,无名管道在不同进程之间,比如父子、兄弟之间共享文件描述符,是如何实现通信的桥梁。

三、 如何使用命名管道

1.\t创建命名管道:需要使用mkfifo函数来创建命名管道,mkfifo函数用于创建一个新的有名FIFO,创建一个命名管道,要用到mkfifo函数或者Touch命令,Touch命令也可以创建一个文件,但只使用来创建一个新的文件,不能用来创建一个命名管道。

2.\t打开命名管道:必须使用open函数打开命名管道,open函数需要指定文件系统中的文件名作为参数,并提供适当的模式参数以便指示调用者目的,打开时可以通过open函数的O_RDONLY, O_WNLY的模式打开,用于只读和只写。

3.\t读写命名管道:使用read和write函数来读写命名管道,它们是最常用的I/O函数之一,read函数它从文件读取一串字符,并将它们存放到一个缓冲区,而write函数则把字符串写入到文件中。

4.\t关闭命名管道:使用close函数来关闭指定的文件描述符,close函数用来将未使用的文件和文件描述符资源释放,close函数关闭给定的文件描述符,并且自动清除该文件的打开计数器。

四、 命名管道的优缺点

1.\t优点:有名管道的优点是可以实现不同进程间通信,调用简单,节省资源,可靠性高,而且还支持多种状态,具有良好的扩展性;无名管道也只是有名管道的一个特殊形式,它不需要先前存在,它只能用于具有亲缘关系的进程之间,具有更高的安全性和私密性。

(一)命名管道概念

命名管道,又称有名管道,是一种一对多的通信技术。它以文件的形式出现,能够在不同记号之间相互通信,可以实现信息传输和交换。它还可以实现进程间的信息交换,并可以实现不同计算机之间的信息交换。

(二)命名管道理论依据

命名管道的实际应用依赖于计算机的“管道机制”,它是通过计算机的内存和虚拟存储器,将一个进程的输出作为另一个进程的输入来实现的。管道的应用依赖于用户的创建,打开,关闭,读取和写入等四种操作。

(三)实际应用

命名管道有可能被广泛地用于实际应用中,比如进程之间共享内存将更容易实现,还可以用于网络代理和及时通信,SMTP服务器,CTI服务器,FTP服务器,文件系统和命令行,一种用于解释和执行文本文件的非交互式环境,并可以从其他程序中获得输入和提供输出,也可以用于记录系统信息,在实时操作系统中实现集群计算等。

(四)编程实现

命名管道的编程实现,通常包括以下步骤:

1、确定管道类型、定义结构体等数据结构;

2、定义管道API函数,并进行初始化和调用;

3、在某些情况下有可能需要为管道指定上下文;

4、使用这些API函数对管道的数据读写,并对数据的处理;

5、最后进行关闭和释放,释放管道内存等相关资源。

(五)优缺点

命名管道的优点:可以实现不同计算机之间的信息交换;它可以同时维护多个客户端,灵活性高,架构清晰;可以解决进程间的延迟和实时性问题;可以避免多次实现应用程序之间的耦合,实现进程间的信息交换;

缺点:命名管道的性能会受到进程数量的影响,在进程数量过多的时候,传输的数据将会减慢;它不能保证传输的体积大小,有可能传输数据会出现延迟;它可以传输的数据量有限。另外,该通信机制可以被攻击。

本文来自网络,不代表本站立场。转载请注明出处: https://tj.jiuquan.cc/a-2676565/
1
上一篇u盘启动盘装系统(u盘启动盘装系统win7)
下一篇 windowsmediaplayer下载(windowsmediaplayer播放器下载)

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: alzn66@foxmail.com

关注微信

微信扫一扫关注我们

返回顶部