美文网首页
命名管道

命名管道

作者: NamasAmitabha | 来源:发表于2024-05-07 17:09 被阅读0次

命名管道

在大多数类似 Unix 的操作系统中,有可能创建一种特殊类型的文件,叫做命名管道。命名管道用来在 两个进程之间建立连接,也可以像其它类型的文件一样使用。

命令管道的行为类似于文件,但实际上形成了先入先出(FIFO)的缓冲。和普通(未命令的)管道一样, 数据从一端进入,然后从另一端出现。通过命令管道,有可能像这样设置一些东西:

process1 > named_pipe

process2 < named_pipe

表现出来就像这样:

process1 | process2

设置一个命名管道

使用 mkfifo 命令能够创建命令管道:

$ mkfifo pipe1
$ ls -l pipe1
prw-r--r-- 1 me me 0 2009-07-17 06:41 pipe1

这里我们使用 mkfifo 创建了一个名为 pipe1 的命名管道。使用 ls 命令,我们查看这个文件, 看到位于属性字段的第一个字母是 “p”,表明它是一个命名管道。

使用命名管道

为了演示命名管道是如何工作的,我们将需要两个终端窗口(或用两个虚拟控制台代替)。 在第一个终端中,我们输入一个简单命令,并把命令的输出重定向到命名管道:

$ ls -l > pipe1

我们按下 Enter 按键之后,命令将会挂起。这是因为在管道的另一端没有任何接受数据。当这种现象发生的时候, 据说是管道阻塞了。一旦我们绑定一个进程到管道的另一端,该进程开始从管道中读取输入的时候,这种情况会消失。 使用第二个终端窗口,我们输入这个命令。

$ cat < pipe1

然后产自第一个终端窗口的目录列表出现在第二个终端中,并作为来自 cat 命令的输出。在第一个终端 窗口中的 ls 命令一旦它不再阻塞,会成功地结束。

相关文章

  • 操作系统知识梳理

    (一)进程间的通信方式 管道中还有命名管道和非命名管道之分,非命名管道只能用于父子进程通讯,命名管道可用于非父子进...

  • Linux进程间的通信

    管道,命名管道,信号

  • Linux-C-day-3-进程间通信--FIFO/套接字

    FIFIO管道 通过命名管道通信,命名管道之间的通信读和写必须同时执行,否则就会阻塞,但是命名管道可以用于非亲缘进...

  • 第二十三天--[消息队列-共享内存]

    学习内容: 管道-命名管道(2/2)、消息队列、共享内存 收获: 管道-命名管道(2/2) 了解了打开FIFO时,...

  • windows安全初探之命名管道

    前言: 最近学校开了操作系统这门课,记录自己学习命名管道中与网络安全有关的内容。 关于命名管道: “命名管道”又名...

  • 系统编程-文件操作5

    作业 通过无名管道,让两个子进程间完成相互通信工作 命名管道 创建一个命名管道 在命名管道里插入数据 首先在一个终...

  • day05

    通过无名管道,让两个子进程间完成相互通信工作 运行结果: 命名管道和一般的管道基本相同,区别:1,命名管道在文件系...

  • System V IPC:共享内存

    共享内存原理 特点 相比管道通信,在读写数据的时候不用切内核态,使通信效率提升 相比命名管道,命名管道是内核管理的...

  • Linux 进程间通信

    进程间通信 一 进程间通信 -- 管道 mkfifo test 创建管道文件 匿名管道和命名管道:匿名管道:匿名管...

  • Linux进程间同步和通信2:命名管道

    目录:1. 半双工管道2. 命名管道3. 消息队列4. 信号量5. 信号6. 共享内存 2 命名管道(FIFO,f...

网友评论

      本文标题:命名管道

      本文链接:https://www.haomeiwen.com/subject/iemqxjtx.html