0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux中的管道和命名管道介绍

Linux爱好者 来源:未知 作者:工程师曾玲 2018-09-23 10:33 次阅读

Linux 中,pipe能让你将一个命令的输出发送给另一个命令。管道,如它的名称那样,能重定向一个进程的标准输出、输入和错误到另一个进程,以便于进一步处理。

“管道”(或称“未命名管道”)命令的语法是在两个命令之间加上|字符:

Command-1 | Command-2 | ...| Command-N

这里,该管道不能通过另一个会话访问;它被临时创建用于接收Command-1的执行并重定向标准输出。它在成功执行之后删除。

Linux中的管道和命名管道介绍

在上面的示例中,contents.txt包含特定目录中所有文件的列表 —— 具体来说,就是ls -al命令的输出。我们首先通过管道(如图所示)使用 “file” 关键字从contents.txt中grep文件名,因此cat命令的输出作为grep命令的输入提供。接下来,我们添加管道来执行awk命令,该命令显示grep命令的过滤输出中的第 9 列。我们还可以使用wc -l命令计算contents.txt中的行数。

只要系统启动并运行或直到它被删除,命名管道就可以持续使用。它是一个遵循FIFO(先进先出)机制的特殊文件。它可以像普通文件一样使用。也就是,你可以写入,从中读取,然后打开或关闭它。要创建命名管道,命令为:

mkfifo

这将创建一个命名管道文件,它甚至可以在多个 shell 会话中使用。

创建 FIFO 命名管道的另一种方法是使用此命令:

mknod p

要重定向任何命令的标准输出到其它命令,请使用>符号。要重定向任何命令的标准输入,请使用 < 符号。

Linux中的管道和命名管道介绍

如上所示,ls -al命令的输出被重定向到contents.txt并插入到文件中。类似地,tail命令的输入通过 < 符号从 contents.txt 读取。

Linux中的管道和命名管道介绍

Linux中的管道和命名管道介绍

这里,我们创建了一个命名管道my-named-pipe,并将ls -al命令的输出重定向到命名管道。我们可以打开一个新的 shell 会话并cat命名管道的内容,如前所述,它显示了ls -al命令的输出。请注意,命名管道的大小为零,并有一个标志 “p”。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11292

    浏览量

    209327
  • 管道
    +关注

    关注

    3

    文章

    145

    浏览量

    17961

原文标题:介绍 Linux 中的管道和命名管道

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux匿名管道命名管道的区别

    管道是 UNIX系统 IPC的最古老的形式,所有的UNIX系统都提供此种通信。所谓的管道,也就是内核里面的一串缓存,从管道的一段写入的数据,实际上是缓存在内核的,令一端读取,也就是从
    发表于 10-12 12:50 993次阅读

    Linux下进程间通信方式-管道

    连接到另一个程序的输入。Linux管道主要包括两种:无名管道和有名管道。 1.无名管道 无名管道
    发表于 08-29 15:29

    标准流管道

    华清远见嵌入式linux学习资料《标准流管道》,1.标准流管道函数说明 。与Linux的文件操作中有基于文件流的标准I/O操作一样,管道的操
    发表于 09-09 14:13

    无名管道系统调用

    `华清远见嵌入式linux学习资料《无名管道系统调用》, 1.管道创建与关闭说明。管道是基于文件描述符的通信方式,当一个管道建立时它会创建两
    发表于 09-09 14:17

    命名管道FIFO读写规则

    Linux命名管道FIFO的读写规则《Linux程序设计(第3版)》对于Linux命名
    发表于 09-24 10:49

    linux系统管道介绍和线程同步代码示例

    传统的进程间通信其中有无名管道(PIPE)、有名管道(FIFO)和信号(Signal)。咱们今天就说说linux基于POSIX的有名管道(
    发表于 10-06 09:55

    CAD软件怎么识别出户管道

    在绘制给排水CAD图纸的过程中经常要设置出户管道,那么浩辰CAD给排水软件如何识别出户管道呢?接下来的CAD制图教程就让小编来给大家介绍一下国产CAD软件——浩辰CAD给排水软件
    发表于 05-18 10:15

    管道元件介绍

    各种管道元件介绍 图文解说
    发表于 08-16 17:09 0次下载

    进程间通信之:管道

    8.2.1 管道概述 本书在第2章中介绍ps的命令时提到过管道,当时指出了管道Linux中一种很重要的通信方式,它是把一个程序的输出直接连
    发表于 10-18 16:06 0次下载
    进程间通信之:<b class='flag-5'>管道</b>

    Linux系统管道和有名管道的通信机制解析

    Linux 进程间通信的几种主要手段。其中管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了
    发表于 11-07 10:51 0次下载

    Linux 多线程同步-命名管道

    命名管道(FIFO)既可用于进程间通信,也可用于线程间通信;  FIFO是一种文件类型,一般文件I/O函数(close,read,write,unlink等)都适用于FIFO  一
    发表于 04-02 14:49 389次阅读

    Linux进程间通信方式——管道

    管道Linux中进程间通信的一种方式,它把一个程序的输出直接连接到另一个程序的输入。Linux管道主要包括两种:无名管道和有名
    发表于 06-01 09:13 1424次阅读
    <b class='flag-5'>Linux</b>进程间通信方式——<b class='flag-5'>管道</b>

    Linux进程间通信方法之管道

    上文中我们介绍了进程间通信的方法之一:信号,本文将继续介绍另一种进程间通信的方法,即管道管道Linux中使用shell经常用到的一个技术
    的头像 发表于 05-14 15:47 1952次阅读
    <b class='flag-5'>Linux</b>进程间通信方法之<b class='flag-5'>管道</b>

    阐述匿名管道命名管道

    内核读取这段数据。对于管道传输的数据是无格式的流且大小受限。对于管道来说,也分为匿名管道命名管道
    的头像 发表于 01-20 17:17 1220次阅读
    阐述匿名<b class='flag-5'>管道</b>和<b class='flag-5'>命名</b><b class='flag-5'>管道</b>

    linux管道概述

    一、进程间通信(IPC)介绍 进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。 IPC的方式通常有管道(包括无名管道命名
    的头像 发表于 02-18 14:51 492次阅读
    <b class='flag-5'>linux</b><b class='flag-5'>管道</b>概述