无名管道和有名管道区别
Linux操作系统(下)复习题

复习题一、填空题1、Linux操作系统是Unix 操作系统的一个克隆版本。
2、Linux的命令运行环境昌Shell,它是一种命令解释器,在用户和操作系统之间提供了一个交互接口。
3、Linux系统中有三个基本的文件类型:普通文件、目录文件和设备文件。
4、Linux系统通过目录将系统中所有的文件分级、分层组织在一起,形成了Linux文件系统的树型层次结构。
5、在Linux系统中建立新目录的命令是mkdir 。
6、Linux编程可分为Shell 编程和高级语言编程。
7、Linux系统提供了许多文本编辑程序,比较常用的有vi 和emacs 等。
8、要使用make,必须编写一个叫Makefile 的文件。
9、autoconf 是一个用于生成可以自动配置软件源代码包以适应多种类Unix系统的shell 脚本的工具。
10、Automake 是一个从文件Makefile.am中自动生成Makefile.in文件的工具。
11、Linux的文件是个简单的字节序列。
12、对于Linux而言,所有对设备和文件的操作都使用文件描述符。
13、调用open 函数可以打开或创建一个文件。
14、设置文件的存取权限,分为属主、组用户和其他用户三类。
每类分为读、写和执行权限。
15、第一个进程都有一个目录与之相连,它称为当前工作目录,或简单地称为工作目录。
16、当打开一个流时,标准输入输出函数返回一个FILE结构的指针。
17、在三个流是在执行程序时自动打开的。
它们是标准输入、标准输出和标准错误输出。
18、有3种类型的无格式I/O 函数可用来读写流,它们是字符I/O函数、行I/O函数和块I/O函数。
19、每一个流对象内部都保持着两个指示器:一个是错误指示器,当读写文件出错时该指示器被设置;另一个为文件结束指示器,当遇到文件尾时该指示器被设置。
20、流有3种不同的缓冲类型,它们是全缓冲、行缓冲和无缓冲。
21、进程在其生存期内可能处于三种基本状态:运行态、就绪态、等待态。
网络与信息安全管理员(4级)试题

网络与信息安全管理员(4级)试题一、单选题(共60题,每题1分,共60分)1、在Linux系统中,()通常称为FIFO。
A、无名管道B、有名管道C、文件管道D、命名管道正确答案:D2、WireShark软件安装时可选安装的WinPcap软件的作用是()。
A、提供包过滤能力B、提供GUI界面C、提供底层的抓包能力D、增强抓包结果的分析能力正确答案:C3、()是传输层以上实现两个异构系统互连的设备。
A、路由器B、网桥C、网关D、集线器正确答案:A4、()是指攻击者在非授权的情况下,对用户的信息进行修改,如修改电子交易的金额。
A、非法使用攻击B、拒绝服务攻击C、信息泄漏攻击D、完整性破坏攻击正确答案:D5、网络犯罪的人一般具有较高的专业水平体现了互联网信息内容安全犯罪()的特点。
A、犯罪手段提升B、犯罪后果严重化C、犯罪主体专业化D、犯罪手段隐蔽化正确答案:C6、下列关于Botnet说法错误的是()。
A、用Botnet发动DDoS攻击B、Botnet的显著特征是大量主机在用户不知情的情况下,被植入了C、拒绝服务攻击与Botnet网络结合后攻击能力大大削弱D、Botnet可以被用来传播垃圾邮件、窃取用户数据、监听网络和扩正确答案:C7、来自网络的拒绝服务攻击可以分为停止服务和消耗资源两类。
攻击特点不包括以下哪个()。
A、多源性、特征多变性B、攻击目标与攻击手段多样性C、开放性D、隐蔽性正确答案:C8、计算机病毒的特性包括()。
A、传播性、破坏性、寄生性B、传染性、破坏性、可植入性C、破坏性、隐蔽性、潜伏性D、自我复制性、隐蔽性、潜伏正确答案:C9、TCSEC标准将计算机系统分为()个等级、7个级别。
A、4B、5C、6D、7正确答案:A10、上网收集与被害人、被害单位有关的负面信息,并主动联系被害人、被害单位,以帮助删帖、“沉底”为由,向其索取财物的行为,构成()。
A、诈骗罪B、诽谤罪C、侮辱罪D、敲诈勒索罪正确答案:D11、TCP/IP参考模型的四个层次分别为()、网际层、传输层、应用层。
第10-11章 网络操作系统

Linux操作系统
Linux是由两部分组成的: 一部分是Linux的内核,由LinusTorvalds开发维护并拥有 版权。目前,Linux的内核的稳定版本是2.0.34.。Linux的 内核为其他的系统程序和应用程序的运行创造一个基本 的环境,主要包括CPU管理的内存管理等部分。 另外一个部分是在内核之上运行的系统程序和应用程序 ,是由因特网上的广大Linux爱好者自己开发或者移植过 来的,是操作系统和用户交互的程序以及用户用来完成 自己工作的程序。 世界上比较有影响的Linux发行版本主要有以下几种:
4.Windows Server 2003的域是 ( ) A.一种特殊的用户 B.改进的工作组 C.用户的权限 D.一个组件
5.Windows Server 2003系统安装了远程协助会 话后,系统同时创建的新帐户名称是( ) A.Help Assistant B.Operators C.Servers D.Publishers
5.适用于网络规模大而网络数量小的IP地址 格式是 A.A类地址 B.B类地址 C.C类地址 D.D类地址
6.IP地址的格式由网络号和 共同组成。
简答题: 简要回答网络互连的五种中继系统。 P152 网络中继器的作用是什么? P160 网桥的作用是什么? P160
本讲目标
网络操作系统概述 Windows server2003网络操作系统 Windows server2003的安全配置 UNIX操作系统 Linux操作系统
第10章 网络操作系统 第11章 Linux操作系统
1.“异型网络”是指网络中具有不同的( ) A.协议 B.服务器 C.传输介质 D.工作站
2.网络层中继系统是( A.网桥 B.网关 C.转发器 D.路由器 )
第3章 进程同步与通信2

进程写管道
进程向管道写数据时,可能有以下两种情况:
管道中有足够的空间存放要写的数据,此时每写 一数据块后核心便自动增加地址项的大小.写操 作完成后,核心修改索引节点中的写指针,并唤 醒所有因该管道空而睡眠等待的读进程. 管道中无足够的空间存放要写入的数据,此时核 心对该索引节点作标记后让写进程睡眠,等待数 据从管道中排出.上述情况的一个例外是,当进 程写的数据量大于管道的容量时,核心将尽可能 多的数据写到管道中,然后使进程睡眠,直到获 得更多的空间.
pipe文件的建立 文件的建立
pipe系统调用建立一个无名管道.其语法格式如下:
int pipe(fdes); int fdes[2];
核心创建一个管道时须完成下述工作:
分配磁盘和内存索引节点. 为读进程和写进程分配文件表项. 分配用户文件描述符.在读进程和写进程的用户文件描述 符表中,分别分配一个表项,并将文件描述符fdes[0]和 fdes[1]分别返回给读进程和写进程.
设置信号的处理方式
系统调用signal用于设置信号的处理方式.其 语法格式如下: void (* func)( ) signal(sig,func) 其中,func为收到软中断信号sig后进程希望 调用函数的地址. 19类信号如表所示.
func的取值情况
func的取值可以分成三种情况:
func=1时,进程对信号sig不予理睬. func=0时,即缺省处理,对大多数软中断信号的 缺省处理是终止进程. func为其他整数值时,它的值是指向信号处理程 序的指针.
管道通信示意图1
初始时,其长度为4,系统将管道看成一个循环 队列.按先进先出的方式读写.
A out B C D in
写入字符E后,管道长度为5
嵌入式填空题

填空题1、ARM微处理器有7种工作模式它们分为两类非特权模式、特权模式。
其中用户模式属于非特权模式2、ARM支持两个指令集,ARM核因运行的指令集不同,分别有两个状态ARM、Thumb,状态存放器CPSR的T位反映了处理器运行不同指令的当前状态3、ARM核有多个存放器,其局部用于通用存放器,有小局部作为专用存放器,R15存放器用于存储PC,R13通常用来存储SP。
ARM处理器有两种总线架构,数据和指令使用同一接口的是诺依曼,数据和收指令分开使用不同接口的是哈佛构造4、ARM微处理器复位后PC的地址通常是0*0初始的工作模式是Supervisor。
5、ARM微处理器支持虚拟存它是通过系统控制协处理器CP15和MMU存储管理部件来进展虚拟存的存储和管理。
当系统发生数据异常和指令领取异常时异常处理程序透过嵌入式操作系统的存管理机制通过MMU交换物理存和虚拟存的页面以保证程序正常执行。
6、编译代码时有两种存储代码和数据的字节顺序一种是小端对齐另一种是大端对齐。
7、构建嵌入式系统开发环境的工具链有多种其中开放源码的工具链是GNU工具链ARM公司提供的工具链是ADS工具链计算机有CISC和RISC两种类型以ARM微处理器为核心的计算机属于RISC 类型其指令长度是定长的9.一般而言嵌入式系统的构架可以分为4个局部分别是处理器、存储器、输入/输出和软件一般软件亦分为操作系统相关和应用软件两个主要局部。
10、根据嵌入式系统使用的微处理器可以将嵌入式系统分为嵌入式微控制器、嵌入式DSP 处理器、嵌入式微处理器以及片上系统。
11、操作系统是联接硬件与应用程序的系统程序,其根本功能有进程管理、进程间通信、存管理、I/O资源管理。
12、从嵌入式操作系统特点可以将嵌入式操作系统分为实时操作系统和分时操作系统其中实时系统亦可分为硬实时系统和软实时系统。
13、核负责管理各个任务或者为每个任务分配CPU时间并且负责任务之间的通信,核的根本效劳是任务切换。
QT进程间通信详细介绍及QProcess机制分析

QT进程间通信详细介绍及QProcess机制分析1、QT通信机制为了更好的实现QT的信息交互,在QT系统中创建了较为完善的通信机制。
QT的通信可分为QT内部通信和外部通信两大类。
对于这两类通信机制及应用场合做如以下分析:(1)QT内部对象间通信在图形用户界面编程中,经常需要将一个窗口部件的变化通知给窗口的其它部件使其产生相应的变化。
对于这种内部对象间的通信,QT主要采用了信号和槽的机制。
这种机制是QT区别于其他GUI工具的核心机制。
在大部分的GUI工具中,通常为可能触发的每种行为通过定义回调函数来实现。
这种回调函数是一个指向函数的指针,在进行函数回调执行时不能保证所传递的函数参数类型的正确性,因此容易造成进程的崩溃。
在QT中,信号和槽的机制取代了这种繁杂的、易崩溃的对象通信机制。
信号是当对象状态改变时所发出的。
槽是用来接收发射的信号并响应相应事件的类的成员函数。
信号和槽的连接是通过connect()函数来实现的。
例如,实现单击按钮终止应用程序运行的代码connect(button , SIGNAL(clicked()) , qApp , SLOT(quit()) );实现过程就是一个button被单击后会激发clicked信号,通过connect()函数的连接qApp会接收到此信号并执行槽函数quit()。
在此过程中,信号的发出并不关心什么样的对象来接收此信号,也不关心是否有对象来接收此信号,只要对象状态发生改变此信号就会发出。
此时槽也并不知晓有什么的信号与自己相联系和是否有信号与自己联系,这样信号和槽就真正的实现了程序代码的封装,提高了代码的可重用性。
同时,信号和槽的连接还实现了类型的安全性,如果类型不匹配,它会以警告的方式报告类型错误,而不会使系统产生崩溃。
(2)QT与外部设备间通信QT与外部通信主要是将外部发来的消息以事件的方式进行接收处理。
外部设备将主要通过socket与QT应用程序进行连接。
2.3管程和进程通信

16
• 信号(signal)通信机制; • 共享存储器系统(shared memory) 通信机制; • ①共享数据结构 • ②共享存储区 • 消息传递(message passing)通信 机制; • 管道通信机制;
进程间通信的类型
17
1 共享存储器系统
共享存储器系统:相互通讯的进程通过共享数据 共享存储器系统:相互通讯的进程通过共享数据 结构和存储区进行通讯 因而可进一步分为: 进行通讯, 结构和存储区进行通讯,因而可进一步分为: 基于共享数据结构的通讯方式;(低效, ;(低效 1基于共享数据结构的通讯方式;(低效,只适 于传递少量数据) 于传递少量数据) 基于共享存储区的通讯方式。 2基于共享存储区的通讯方式。为了传送大量数 在存储区中划出一块共享存储区, 据,在存储区中划出一块共享存储区,诸进程可 通过对共享存储区进行读或写数据实现通讯。 通过对共享存储区进行读或写数据实现通讯。
向系统申请共享存储区中的一个分区 指定该分区的关键字 如果已经给其他进程分配了这样的存储区, 将使用分区的描述符返回给申请者 4 申请者将申请到的共享分区挂到本进程上 1 2 3
18
2 消息传递系统
• 在消息传递系统中,进程间的数据交换是以消 息(message,在计算机网络中又称报文)为单位。 程序员直接利用系统提供的一组通讯命令(原 语)来实现通讯。
信号量机制作为同步工具是卓有成效的,但作为通讯工具则不够理想, ( 效率低。 通讯对用户不透明。)
高级通信:用户可以直接利用操作系统所提供的一组 通信命令,高效地传送大量数据的一种通信方式。
15
进程的同步与互斥是一种通讯方式,一 进程的同步与互斥是一种通讯方式, 进程可通过修改变量或信号量告知另一进程, 进程可通过修改变量或信号量告知另一进程, 它是否可以继续执行下去,利用生产者—— 它是否可以继续执行下去,利用生产者 消费者算法, 消费者算法,生产者进程可以传送一批数据 给消费进程, 给消费进程,或者说生产者通过缓冲区与消 费者进行通讯,但P、V操作只能传递信号, 费者进行通讯, 传递信号, 信号本身不包含任何数据, 信号本身不包含任何数据,而进程不当还容 易导致进程死锁,因此, 易导致进程死锁,因此,称这些同步机构为 低级通讯机构. 低级通讯机构.
进程间通信和线程间通信的几种方式

进程间通信和线程间通信的⼏种⽅式进程进程(Process)是计算机中的程序关于某数据集合上的⼀次运⾏活动,是系统进⾏资源分配和调度的基本单位,是结构的基础。
在早期⾯向进程设计的计算机结构中,进程是程序的基本执⾏实体;在当代⾯向线程设计的计算机结构中,进程是线程的容器。
程序是指令、数据及其组织形式的描述,进程是程序的实体。
进程是⼀个具有独⽴功能的程序关于某个数据集合的⼀次运⾏活动。
它可以申请和拥有系统资源,是⼀个动态的概念,是⼀个活动的实体。
它不只是程序的,还包括当前的活动,通过的值和处理的内容来表⽰。
进程的概念主要有两点:第⼀,进程是⼀个实体。
每⼀个进程都有它⾃⼰的地址空间,⼀般情况下,包括区域(text region)、数据区域(data region)和(stack region)。
⽂本区域存储处理器执⾏的代码;数据区域存储变量和进程执⾏期间使⽤的动态分配的内存;堆栈区域存储着活动过程调⽤的指令和本地变量。
第⼆,进程是⼀个“执⾏中的程序”。
程序是⼀个没有⽣命的实体,只有器赋予程序⽣命时(操作系统执⾏之),它才能成为⼀个活动的实体,我们称其为。
进程是具有⼀定独⽴功能的程序关于某个数据集合上的⼀次运⾏活动,进程是系统进⾏资源分配和调度的⼀个独⽴单位。
每个进程都有⾃⼰的独⽴内存空间,不同进程通过进程间通信来通信。
由于进程⽐较重量,占据独⽴的内存,所以上下⽂进程间的切换开销(栈、寄存器、虚拟内存、⽂件句柄等)⽐较⼤,但相对⽐较稳定安全。
线程线程是进程的⼀个实体,是CPU调度和分派的基本单位,它是⽐进程更⼩的能独⽴运⾏的基本单位.线程⾃⼰基本上不拥有系统资源,只拥有⼀点在运⾏中必不可少的资源(如程序计数器,⼀组寄存器和栈),但是它可与同属⼀个进程的其他的线程共享进程所拥有的全部资源。
线程间通信主要通过共享内存,上下⽂切换很快,资源开销较少,但相⽐进程不够稳定容易丢失数据。
⼀个线程可以创建和撤消另⼀个线程,同⼀进程中的多个线程之间可以并发执⾏。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011-06-08 21:45linux 管道 FIFO——写的很全,转来的pipe是Linux中最经典的进程间通信手段,在终端里通常用来组合命令,例如“ls -l|wc -l”。
它的作用很直观,就是使得前一个进程的输出作为后一个进程的输入,在概念上很符合“管道”的意思。
用管道实现“ls -l | wc -l”《情景分析》上有这个例子的代码,我觉得很适合用来了解管道。
这里假设终端对应的进程为PA,wc、ls是PA先后创建的两个子进程child_B与child_C。
代码简化后抄录如下:int main(){int pipefds[2], child_B, child_C;pipe(pipefds);if (!(child_B=fork()){ //先创建“读”的一端,它要关闭“写”的的一端close(pipefds[1]);close(0);dup2(pipefds[0], 0); //在执行系统调用execve后,child_B会释放0,1,2之外由父进程打开的文件,close(pipefds[0]); //所以要把pipefds[0]复制到标准输入对应的文件句柄0 execl("/usr/bin/wc", "-l", NULL);} //这里之后,A和B可以通过管道进行通信close(pipefds[0]);if (!(child_C=fork()){ //再创建“写”的一端,它要关闭“读”的的一端close(1);dup2(pipefds[1],1); //道理同前面close(pipefds[1]);execl("/bin/ls", "-1", NULL);} //这里之后,B和C可以通过管道进行通信close(pipefds[1]);wait4(child_B, NULL, 0, NULL);return 0;}FIFOFIFO就是命名管道,或有名管道。
对于pipe我们不难看出它只能用于一个进程家族之间通信,父子之间,兄弟之间等等。
如果想要让管道在更宽泛的环境中,那是不行的,原因是它没有“名字”或者说是匿名的,另外的进程看不到它,这样就有了命名管道。
它同样是基于VFS,对应的文件类型就是FIFO文件,可以通过mknod命令在磁盘上创建一个FIFO文件(注意:这就是它与pipe的本质区别,pipe完全就是存在与内存中,在磁盘上毫无痕迹),当进程想通过该FIFO 来通信时就可以标准的API open打开该文件,然后开始读写操作。
对于FIFO 的读写实现,它与pipe是相同的。
区别在于,FIFO有open这一操作,而pipe 是在调用pipe这个系统调用时直接创建了一对文件描述符用于通信。
并且,FIFO 的open操作还有些细致的地方要考虑,例如如果写者先打开,尚无读者,那么肯定是不能通信了,所以就需要先去睡眠等待读者打开该FIFO,反之对读者亦然。
管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常说的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间,这是它与有名管道的最大区别。
有名管道叫named pipe或者FIFO(先进先出),可以用函数mkfifo()创建。
Linux管道的实现机制在Linux中,管道是一种使用非常频繁的通信机制。
从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题,具体表现为:· 限制管道的大小。
实际上,管道是一个固定大小的缓冲区。
在Linux中,该缓冲区的大小为1页,即4K字节,使得它的大小不象文件那样不加检验地增长。
使用单个固定缓冲区也会带来问题,比如在写管道时可能变满,当这种情况发生时,随后对管道的write()调用将默认地被阻塞,等待某些数据被读取,以便腾出足够的空间供write()调用写。
· 读取进程也可能工作得比写进程快。
当所有当前进程数据已被读取时,管道变空。
当这种情况发生时,一个随后的read()调用将默认地被阻塞,等待某些数据被写入,这解决了read()调用返回文件结束的问题。
注意:从管道读数据是一次性操作,数据一旦被读,它就从管道中被抛弃,释放空间以便写更多的数据。
1. 管道的结构在 Linux 中,管道的实现并没有使用专门的数据结构,而是借助了文件系统的file结构和VFS的索引节点inode。
通过将两个 file 结构指向同一个临时的VFS 索引节点,而这个 VFS 索引节点又指向一个物理页面而实现的。
2.管道的读写管道实现的源代码在fs/pipe.c中,在pipe.c中有很多函数,其中有两个函数比较重要,即管道读函数pipe_read()和管道写函数 pipe_wrtie()。
管道写函数通过将字节复制到 VFS 索引节点指向的物理内存而写入数据,而管道读函数则通过复制物理内存中的字节而读出数据。
当然,内核必须利用一定的机制同步对管道的访问,为此,内核使用了锁、等待队列和信号。
当写进程向管道中写入时,它利用标准的库函数write(),系统根据库函数传递的文件描述符,可找到该文件的 file 结构。
file 结构中指定了用来进行写操作的函数(即写入函数)地址,于是,内核调用该函数完成写操作。
写入函数在向内存中写入数据之前,必须首先检查 VFS 索引节点中的信息,同时满足如下条件时,才能进行实际的内存复制工作:·内存中有足够的空间可容纳所有要写入的数据;·内存没有被读程序锁定。
如果同时满足上述条件,写入函数首先锁定内存,然后从写进程的地址空间中复制数据到内存。
否则,写入进程就休眠在 VFS 索引节点的等待队列中,接下来,内核将调用调度程序,而调度程序会选择其他进程运行。
写入进程实际处于可中断的等待状态,当内存中有足够的空间可以容纳写入数据,或内存被解锁时,读取进程会唤醒写入进程,这时,写入进程将接收到信号。
当数据写入内存之后,内存被解锁,而所有休眠在索引节点的读取进程会被唤醒。
管道的读取过程和写入过程类似。
但是,进程可以在没有数据或内存被锁定时立即返回错误信息,而不是阻塞该进程,这依赖于文件或管道的打开模式。
反之,进程可以休眠在索引节点的等待队列中等待写入进程写入数据。
当所有的进程完成了管道操作之后,管道的索引节点被丢弃,而共享数据页也被释放。
因为管道的实现涉及很多文件的操作,因此,当读者学完有关文件系统的内容后来读pipe.c中的代码,你会觉得并不难理解。
Linux 管道的创建和使用都要简单一些,唯一的原因是它需要更少的参数。
实现与 Windows 相同的管道创建目标,Linux 和 UNIX 使用下面的代码片段:创建 Linux 命名管道int fd1[2];if(pipe(fd1)){ printf("pipe() FAILED: errno=%d",errno);return 1;}Linux 管道对阻塞之前一次写操作的大小有限制。
专门为每个管道所使用的内核级缓冲区确切为 4096 字节。
除非阅读器清空管道,否则一次超过 4K 的写操作将被阻塞。
实际上这算不上什么限制,因为读和写操作是在不同的线程中实现的。
Linux 还支持命名管道。
对这些数字的早期评论员建议我,为公平起见,应该比较 Linux 的命名管道和 Windows 的命名管道。
我写了另一个在 Linux 上使用命名管道的程序。
我发现对于 Linux 上命名的和未命名的管道,结果是没有区别。
Linux 管道比 Windows 2000 命名管道快很多,而 Windows 2000 命名管道比 Windows XP 命名管道快得多。
例子:#include<stdio.h>#include<unistd.h>int main(){int n,fd[2]; // 这里的fd是文件描述符的数组,用于创建管道做准备的pid_t pid;char line[100];if(pipe(fd)<0) // 创建管道printf("pipe create error\n");if((pid=fork())<0) //利用fork()创建新进程printf("fork error\n");else if(pid>0){ //这里是父进程,先关闭管道的读出端,然后在管道的写端写入“hello world"close(fd[0]);write(fd[1],"hello word\n",11);}else{close(fd[1]); //这里是子进程,先关闭管道的写入端,然后在管道的读出端读出数据n= read(fd[0],line,100);write(STDOUT_FILENO,line,n);}exit(0);}备注:管道分为无名管道和有名管道,其中无名管道不属于任何文件系统,只存在于内存中,它是无名无形的,但是可以把它看作一种特殊的文件,通过使用普通文件的read(),write()函数对管道进行操作,有名管道是有名有形的,为了使用这种管道,LINUX中设立了一个专门的特殊文件系统--管道文件,它存在于文件系统中,任何进程可以在任何时候通过有名管道的路径和文件名来访问管道。
但是在磁盘上的只是一个节点,而文件的数据则只存在于内存缓冲页面中,与普通管道一样。