linux中管道的概念,浅谈Linux管道

2023-10-26

管道(pipe)是一个我们在学习Linux命令行的时候就会引入的一个很重要的概念。管道是UNIX环境中历史最悠久的进程间通信方式,从本质上说,管道也是一种文件,也是遵循UNIX的“一切皆文件”的原则设计的。虽然实现形态上是文件,但是管道本身并不占用磁盘或者其他外部存储的空间。在Linux的实现上,它占用的是内存空间。所以,Linux管道实际上就是一个操作方式为文件的内存缓冲区。

一、Linux管道分两种类型:匿名管道和命名管道也叫做有名或无名管道

匿名管道最常见的形态就是我们在shell操作中最常用的”|”。它的特点是只能在父子进程中使用,父进程在产生子进程前必须打开一个管道文件,然后fork产生子进程,这样子进程通过拷贝父进程的进程地址空间获得同一个管道文件的描述符,以达到使用同一个管道通信的目的。此时除了父子进程外,没人知道这个管道文件的描述符,所以通过这个管道中的信息无法传递给其他进程。这保证了传输数据的安全性,当然也降低了管道了通用性,于是系统还提供了命名管道。

二、Linux管道的实现机制

在Linux中,管道是一种使用非常频繁的通信机制。从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题:

1.限制管道的大小。实际上,管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为1页,即4K字节,使得它的大小不象文件那样不加检验地增长。使用单个固定缓冲区也会带来问题,比如在写管道时可能变满,当这种情况发生时,随后对管道的write()调用将默认地被阻塞,等待某些数据被读取,以便腾出足够的空间供write()调用写。

2.读取进程也可能工作

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux中管道的概念,浅谈Linux管道 的相关文章

  • 一种消息和任务队列——beanstalkd

    beanstalkd 是一个轻量级消息中间件 其主要特性 基于管道 tube 和任务 job 的工作队列 work queue d 管道 tube tube类似于消息主题 topic 在一个beanstalkd中可以支持多个tube 每个t
  • 《现代加工技术》第1章 绪论

    1 1 加工技术发展简史 文章目录 1 1 加工技术发展简史 1 2 现代加工技术的地位与分类 1 3 现代加工技术的发展趋势 加工技术历史悠久 可以说它伴随着人类的诞生而出现 伴随着人类的进步而发展 人类与猿相分离 是由于人学会了双足行走
  • 第2章 应用层-计算机网络

    目录 学习目的 相关概念理解和主流应用层协议学习 目录 应用层协议原理 一些网络应用 了解应用层大概的应用 研发网络应用程序 研发网络应用程序的核心 基于运输层提供的服务 实现可以相互通信的端系统 没有应用程序软件运行在网络核心设备上 网络
  • 大数据专业到底有多火?

    2017 2018大数据为什么这么火热 从以下方面来看 人民日报官方微信公众平台发布了一篇文章 公布已有35所高校获批 数据科学与大数据技术 专业 使大数据受到更多家长的关注 大数据也被越来越多的人重视 高校开办相关专业也不能缓解大数据人才
  • MySQL安装出现环境问题(缺少Microsoft Visual C++ 2019 Redistributable Package)

    在安装MySQL时 选择安装类型 Setup Type 后 需要检查底层环境 一般来说 电脑的环境都是满足要求的 部分电脑可能会存在环境缺失的情况 不同安装模式和版本的环境要求不同 有的一个两个 有的多个 当相关环境缺失时 环境会报错 并显
  • 8.spring系列- java注解

    问题 注解是干什么的 一个注解可以使用多次吗 如何使用 Inherited是做什么的 Target中的TYPE PARAMETER和TYPE USER用在什么地方 泛型中如何使用注解 注解定义可以实现继承吗 spring对注解有哪些增强 A
  • Unity 2022 (Windows 10) 每次打开项目都会弹出"Unity is running as administrator"

    1 Win R 输入 control 打开控制面板 2 找到 用户账户 gt 更改用户账户控制设置 3 将滑块调用中间 仅当应用尝试更改我的计算机时通知我 默认 4 重启电脑
  • python后端学习(四)进程、消息队列、进程池

    进程以及状态 1 进程 程序 例如xxx py这是程序 是一个静态的 进程 一个程序运行起来后 代码 用到的资源 称之为进程 它是操作系统分配资源的基本单元 不仅可以通过线程完成多任务 进程也是可以的 2 进程的状态 工作中 任务数往往大于
  • 【转载】KaTeX 数学公式大全

    文章目录 转载自 前言 受支持的功能 声调记号 定界符 括号之类 定界符大小 5
  • HTML——锚链接

    不同页面锚链接 a href a p a href 锚链接 html shuiguo 水果 a p p a href 锚链接 html shucai 蔬菜 a p p a href 锚链接 html yundong 运动 a p 展示效果
  • [计算机毕业设计]食品安全数据的关联分析模型的应用

    前言 大四是整个大学期间最忙碌的时光 一边要忙着准备考研 考公 考教资或者实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度的 对本科同学来说是充满挑战 为帮助大
  • angular6学习(七):样式设置和调用

    样式调用是在app component ts中调用app component css设置 外置调用 也可内置调用 一 外置调用 在html文件中添加h3标签 在css文件中设置h3样式 显示如下 一 内置调用 在 ts文件中设置h3样式 显
  • 远程计算机已加入AAD凭据不工作

    解决方法 计算机需要加入AAD Azure Active Directory 设置 账户 其他用户 连接工作或学校用户 连接 在下方的 替代操作 中选择 将此设备加入 Azure Active Directory 输入用户名和密码 点击加入
  • 学习日记——STM32CubeMX软件应用(2020.1.31)

    STM32CubeMX的定义 STM32CubeMX是ST公司主动原创的一款代码生成工具 它可以减轻开发时间和费用 相当于一种偷懒的做法 STM32CubeMX集成了一个全面的软件平台 支持STM32每一个系列的MCU开发 STM32Cub
  • 【idea】IDEA常用断点详解

    一 断点条件过滤 场景 过滤条件i lt 10 1 标注断点 点击需要调试的代码行 2 鼠标悬浮在断点上 右击 在condition中输入条件 如 i 10 点击done按钮 3 确认条件是否生效 鼠标悬浮断点 显示所填写的条件 4 点击右
  • 搭建个人网站vm+center os+apache

    如何搭建个人网站 准备的前提 vm cnetos 7 apche 在vm上安装center os的教程就不介绍了这个有很多 1 如何配置一台刚装好了center os 7并且能够使他联网 ping 通百度 ip a查看当前ip地址 如果显示
  • 微信小程序:环形进度条模块

    利用canvas实现微信小程序环形进度条模块 模块下载链接 下载链接 最近开发一款背单词的微信小程序 计划使用环形进度条展示每日背单词进度 效果图如下 可渐变颜色 开发步骤 1 在根目录创建名为components的文件夹 用来放需要引用的
  • java链式编程/级联式编程

    链式编程 也叫级联式编程 调用对象的函数时返回一个this对象指向对象本身 达到链式效果 可以级联调用 链式编程 通过高阶函数以点为连接将多个函数连接在一起完成参数传递和复杂的操作 通俗的说是通过点号 链接在一起成为一句代码 链式编程的优点
  • sqli-labs-less-1完整解析,小白干货

    Less 1 Sql知识点 Limit x y 从x 1行开始输出 共输出y行 Order by 排序 asc升序 默认 desc 降序 Union MySQL执行两条SELECT语句 并把输出组合成单个查询结果集 Group concat

随机推荐

  • Java后端返回前端的日期差9小时?

    当后端返回Date类型到前端的时候 需要在实体中增加 JsonFormat注释 这个可以帮我们处理格式化 很多人都是用下面这种写法 JsonFormat locale zh timezone GMT 8 pattern yyyy MM dd
  • win10蓝牙已配对连接不上_Win10系统蓝牙配对手机连接不成功的解决方法

    Win10系统蓝牙配对手机连接不成功的解决方法 很多的Win10用户都在使用蓝牙连接手机 一些网友在连接时出现win10系统蓝牙已配对但连接不成功 出现在这样的问题怎么解决呢 下面我们来看看Win10镜像官网给大家带来的解决方法 Win10
  • 封装,继承和多态详解

    封装 继承和多态是 C 中三个重要的面向对象编程技术 本文将详细介绍这些技术的概念 原理和用法 以帮助读者更好地理解并应用它们 一 封装 封装是一种面向对象编程的基本概念 它指的是将数据和方法封装在一个对象内部 防止外部通过对象的公共接口直
  • 一文看懂IC芯片生产流程:从设计到制造与封装

    origin http forum esm cn com FORUM POST 1000163993 1201257744 0 HTM ga 1 101949507 338942905 1436813394 芯片制造的过程就如同用乐高盖房子
  • 深度学习和因果如何结合?北交最新《深度因果模型》综述论文,31页pdf涵盖216篇文献详述41个深度因果模型...

    来源 专知 北京交通大学最新 深度因果模型 综述论文 31页pdf涵盖216页pdf详述41个深度因果模型 值得关注 因果关系概念在人类认知中起着重要作用 在过去的几十年里 因果推理在计算机科学 医学 经济学和教育等许多领域都得到了很好的发
  • 关于504报错的解决方法之一

    项目场景 记录一些工作遇见的bug 项目场景 使用命令 npm start 运行代码打开网页 报504 打开失败 问题描述 提示 这里描述项目中遇到的问题 使用命令 npm start 运行代码打开网页 报504 打开失败 原因分析 504
  • 运行java程序报java/lang/NoClassDefFoundError: java/lang/Object

    今天直接将解压后的jre文件放到linux上 执行java命令 报如下错误 Error occurred during initialization of VM java lang NoClassDefFoundError java lan
  • 【头歌】Hadoop开发环境搭建

    本来不想写这个了 就为了搞这实验截图 又得敲一遍这个代码 代码量真的大 我真的是吐了呀 MD 大家反正写过 直接粘贴是最佳选择 没必要自己再做一遍 第1关 配置开发环境 JavaJDK的配置 任务描述 本关任务 配置 JavaJDK 相关知
  • Cadence Allegro 17.4学习记录开始00

    目录 Cadence Allegro 17 4学习记录绪论 第一 先来说说Cadence Allegro 17 4的原因 第二 简单介绍这个EDA软件Cadence Allegro 17 4 第三 学习规划 1 Cadence Allegr
  • java ssh项目 定时任务时,jdbc线程池耗尽问题

    场景 在ssh项目中 用spring自带的schedule创建了个定时任务 服务启动时自动调用任务 在任务执行一段时间后 报了 xxx active 150 maxActive 150错误 原因 spring自带的schedule创建的定时
  • 前端面试题精心整理(一)-TypeScript

    文章目录 TypeScript相关问题及知识点 Q1 ts中type和interface的区别 A1 有相同点与不同点 具体内容如下 Q2 ts中interface和class的区别 分别什么时候使用 A2 interface和class都
  • 运放专题:电压电流转换

    电压电流转换 电压 电流转换即V I转换 是将输入的电压信号转换成满足一定关系的电流信号 转换后的电流相当一个输出可调的恒流源 其输出电流应能够保持稳定而不会随负载的变化而变化 一般来说 电压电流转换电路是通过负反馈的形式来实现的 可以是电
  • python程序设计基础实验题_Python程序设计实验报告:实验五 综合运用三种基本结构进行程序设计...

    实验五 综合运用三种基本结构进行程序设计 综合性实验 班级 物流191 姓名 韩晶晶 学号 3190505140 指导老师 修宇 成绩 日期 2020 4 25 实验目的 1 进一步掌握选择与循环结构程序设计的方法和技巧 2 综合运用三种基
  • Docker Search 异常:Error response from daemon: Get https://index.docker.io/v1/search?xxx

    docker search tomcat Error response from daemon Get https index docker io v1 search q tomcat n 25 dial tcp lookup index
  • KGDB调试内核

    1 环境 Ubuntu 20 04 VMware Worksation 16 Player Linux Kernel 5 4 0 2 设置虚拟机 2 1 准备两台虚拟机 准备一台虚拟机 然后克隆一台虚拟机 下面以左边为客户端和右边为目标机展
  • phpstorm 自动折叠注释

    用了swagger后 注释得写好大一堆 超过一百行的注释都很常见 看起来心好累 phpstorm 能不能自动折叠那些注释呢 网上搜索不到办法 自己尝试去设置了找了下 原来还真有这个功能 设置方法如下 在设置搜索 fold 勾上 Docume
  • Self-study Python Fish-C Note-4 P20-P26 (part1)

    python 中的列表 Part 1 本文主要讲解了python中列表的使用 本文为自学B站上鱼C的python课程随手做的笔记 如有问题 欢迎大家批评指正 原视频链接 https www bilibili com video BV1c44
  • 排序方法与初始排列次序的关系

    元素的移动次数与关键字的初始排列次序无关的是 基数排序 元素的比较次数与初始序列无关是 选择排序 折半插入排序 算法的时间复杂度与初始序列无关的是 选择排序 堆排序 归并排序 基数排序 算法的排序趟数与初始序列无关的是 插入排序 选择排序
  • TongWeb上应用部署方式

    TongWeb上可部署的web应用结构可分为两种 1 打成war包形式的文件 2 以文件夹目录方式的web应用 这两种方式必须要有WEB INF目录才是一个合法web应用结构 方可部署 特殊情况 某些应用是在apache nginx上跑的静
  • linux中管道的概念,浅谈Linux管道

    管道 pipe 是一个我们在学习Linux命令行的时候就会引入的一个很重要的概念 管道是UNIX环境中历史最悠久的进程间通信方式 从本质上说 管道也是一种文件 也是遵循UNIX的 一切皆文件 的原则设计的 虽然实现形态上是文件 但是管道本身