linux 管道

进程间的通信IPC-匿名管道pipe 进程间的通讯-管道pipe 管道: 实现原理: 内核借助环形队列机制,使用内核缓冲区实现。 特质: 1. 伪文件(不占用磁盘空间) 2. 管道中的数据只能一次读取。 3. 数据在管道中,只能单向流动。 局限性: 1. 自己写,不能自己读。(不能同时进行读写操作) 2. 数据不可以反复读。 3. 双向半双工通信。(可以读也可以写,但同一进程只能是其中的一种) 4. 血缘关系进程间可用。 pipe函数: int pipe(int fd[2]); 函数功能:创建,并打开管道。 传出参数: 阅读详情

管道

管道的特质
  1. 本质是一个伪文件(实质是内核缓冲区)
  2. 由两个文件描述符引用, 一个表示读端, 一个表示写端
  3. 规定数据从管道的写端写入, 读端读出

其原理实则为内核使用环形队列机制, 借助内核缓冲区实现

局限性:

  1. 数据不能由一个进程同时读和写
  2. 不可反复读取管道中的数据, 一旦读走, 则管道将不存在
  3. 采用半双通讯的方式, 数据只能在单方向上流动
  4. 只能在有公共祖先的进程间使用管道

管道的用法

pipe
创建并打开管道
int pipe(int fd[2])
参数:
		fd[0]: 读端
		fd[1]: 写端
返回值:
		成功: 0
		失败: -1

总结

1. 读管道:	
		1. 若有数据, 则read返回实际读到的字节数
		2. 若无数据
				1. 若写端全部被关闭, 则read返回0
				2. 若写端没有被全部关闭, 则read阻塞等待, 让出cpu
				
2. 写管道:
		1. 读端全部被关闭, 进程异常终止(SIGPIPE)
		2. 读端没有全部被关闭:
				1. 管道已满, write阻塞
				2. 管道未满, write将数据写入, 返回实际写入的字节数
		

fpathconf

long fpathconf(int fd, int name);
参数:
		fd: 文件的描述符
		name: 查询的参数
				_PC_PIPE_BUF
				_PC_NAME_MAX
				_PC_LINK_MAX
				_PC_MAX_INPUT
				...

管道的优劣

优点:

	1. 使用简单

缺点:

	1. 只能单向通讯, 双向通讯需要建立两个管道
	1. 只能用于父子, 兄弟进程间的通信

命名管道

mkfifo

int mkfifo(const char *pathname, mode_t mode);
参数:
		pathname: 创建的路径(名字)
		mode: 创建的权限
返回值:
		成功: 0
		失败: -1, 设置 errno
匿名管道 Linux 整理一下控制代码,这里是输入型参数,只需要读这样就可以轮询方式选择进程了,不用随机了结果。 阅读详情

相关推荐

解决Windows 10更新失败错误代码0x80070643

在Windows 10操作系统的更新过程中,用户时常会遇到各类错误代码,这些代码通常成为顺利完成更新的绊脚石。其中,错误代码0x80070643是一个较为常见的更新失败提示,它可能导致系统更新停滞不前。面对这一挑战,本文将详细介绍如何有效解决这一错误,帮助用户顺利完成Windows 10的更新。

nntxthml的博客 1829

linux命令管道工作原理与使用方法

一、管道定义 管道是一种两个进程间进行单向通信的机制。因为管道传递数据的单向性,管道又称为半双工管道。管道的这一特点决定了器使用的局限性。管道是Linux支持的最初Unix IPC形式之一,具有以下特点: *** 数据只能由一个进程流向另一个进程(其中一个读管道,一个写管道);如果要进行双工通信,需要建 立两个管道。 *** 管道只能用于父子进程或者兄弟进程间通信。,也就是说管道只能用...

weixin_34198762的博客 757

基于JavaFX的Http Server模拟器

源码地址 GitHub - DayRain/http-server-simulator: http server 模拟器 功能描述 HttpServer模拟器,通过简单的配置即可模拟第三方服务端,用于接收和响应HTTP请求。 支持同时模拟多个服务、动态添加接口、动态配置返回值。 使用说明 运行 exe运行 编译代码后,点击exe直接运行 代码运行 下载好代码后,运行主类ApplicationStarter即可 新建服务 主界面如下 点击 文件-新建 创建新的服务 ...

小楼夜听雨的博客 2536

linux管道简单理解

什么是管道,怎么理解呢 管道(Pipeline),其实简单理解来看,管道的作用是在命令和命令之间,传递数据。比如说一个命令的结果,作为另一个命令的输入。命令其实就是进程。更准确地说,管道在进程间传递数据. linux里的管道将一个进程的输出流定向输入到另一个进程,像管道一样,把两个进程连接起来,如果一个进程输出了信息,那么另一个进程就能获取到输出的信息. 我们知道,在linux中,系统把所有的元素都抽象为文件,其中也包括socket,那么管道其实也分为匿名管道和命名管道. 匿名管道,这种管道在文件系统中,

cherises的博客 2771

Unity插件NodeCanvas之行为树的详细教程

NodeCanvas 是一个用于 Unity 的可视化脚本工具,主要用于游戏开发中的行为树、状态机和流程图的设计。它通过节点编辑器的方式,让开发者可以更直观地创建和管理游戏逻辑,减少了传统编码的复杂性。今天我们就来详细介绍一下NodeCanvas插件。

TxNet 1962

从 ABAP 视角看 JSON :7.40 版本带来的那些改变

摘要:ABAP 对 JSON 的原生支持 随着企业系统与外部 API 的交互增多,ABAP 从 NetWeaver 7.40 开始原生支持 JSON 格式。通过复用现有 XML 基础设施,ABAP 团队引入 JSON-XML 概念,使用 sXML Library 和 IF_SXML=>CO_XT_JSON 常量处理 JSON 数据。开发人员可通过 CALL TRANSFORMATION 语句实现 ABAP 数据与 JSON 的双向转换,大幅简化了与外部系统的数据交互。这种标准化的 JSON 处理方式提

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 180

Linux 管道

Linux管道指令 管道 管道符:| 作用:管道一般可以用于 “过滤” ,“特殊” ,“扩展处理”。 语法:管道不能单独使用,必须需要配合前面所讲的一些指令来一起使用,其作用主要是辅助作用。 用法一:过滤 语法:#ls 【想要过滤的目录地址】 | grep 【想要查找的东西】 过滤案例:需要通过管道查询出根目录下包含“n”字母的文档名称 补充: #ls / | grep y 说明: 1、以管道作为分界线,前面的命令有个输出,后面需要先输入,然后再过滤,最后输出,通俗的将就

选择目标,然后保持热爱。 2472

2024年11月架构设计师综合知识真题回顾,附参考答案、解析及所涉知识点(一)

软考高级考试包含三个科目:信息系统综合知识、系统架构设计案例分析和系统架构设计论文。考试形式为机考。本文主要回顾2024年下半年(2024-11-10)系统架构设计师考试上午综合知识科目的选择题,同时附带参考答案、解析和所涉知识点。由于机考时题目顺序是打乱的,本文题目所标序号只为区分不代表实际顺序。综合知识。

一几文的编程学习笔记。 9283

Linux:管道

管道是一种通信机制,通常用于进程间的通信(也可通过 socket 进行网络通信),它表现出来的形式就是将前面每一个进程的输出直接作为下一个进程的输入。管道又分为匿名管道和具名管道。我们在使用一些过滤程序时经常会用到的就是匿名管道,在命令行中由 | 分隔符表示。具名管道简单的说就是有名字的管道,通常只会在源程序中用到具名管道。 例如:使用 ls 命令来查看查看 /etc 目录下有哪些文件和目录,通过管道将前一个命令(ls)的输出作为下一个命令(less)的输入,然后就可以一行一行地看。cur命令用于打印每一行

weixin_49346755的博客 451

beegfs读取文件完整流程分析

读取小于512KB文件数据,小于1s 读取15MB文件数据,花费7秒。

wfzy的博客 836

基于simulink构建一个完整的航空航天器姿态控制与导航仿真模型

航空航天器的姿态控制与导航系统是确保飞行器稳定运行和精确执行任务的核心技术。其目标是通过传感器获取飞行器的状态信息,并利用控制器调整飞行器的姿态,使其按照预定轨迹飞行。基于MATLAB/Simulink平台进行航空航天器姿态控制与导航系统的建模与仿真,可以帮助研究者验证算法性能并优化系统的动态响应。本项目旨在构建一个完整的航空航天器姿态控制与导航仿真模型,包括飞行器动力学建模、传感器模块设计、控制器实现以及导航算法仿真,并通过仿真分析其性能。

xiaoheshang_123的博客 273

Linux管道

命名匿名管道的基本知识与一下验证~~

weixin_62029250的博客 1万+

Autosar_MCAL_Port

PORT Driver就是对微控制器(MCU)的整个PORT模块进行初始化配置。很多端口和管脚被分配有多种不同的功能,即可以进行引脚功能复用,比如通用I/O、adc、pwm、spi等功能。因此,对PORT必须有一个整体的配置和初始化,对各管脚的具体配置和使用取决于微控制器和ECU的引脚功能分配。PORT初始化数据应当尽可能高效地写到每个端口。DIO驱动中所用到的端口的配置和初始化都是在PORT驱动模块中完成的。因此,在使用DIO功能之前,应先进行PORT的初始化。1、PortContainer说明。

不断debug,优化中…… 239

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

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

weixin_42332910的博客 6115

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

linux管道使用_如何在Linux上使用管道

linux管道使用Fatmawati Achmad Zaenuri/Shutterstock.comFatmawati Achmad Zaenuri / Shutterstock.comUse Linux pipes to choreograph how command-line utilities collaborate. Simplify complex processes and boost...

cuma1988的博客 4725

【Linux】Linux的管道

管道是Linux由Unix那里继承过来的进程间的通信机制,它是Unix早期的一个重要通信机制。其思想是,在内存中创建一个共享文件,从而使通信双方利用这个共享文件来传递信息。由于这种方式具有单向传递数据的特点,所以这个作为传递消息的共享文件就叫做“管道”。 在管道的具体实现中,根据通信所使用的的文件是否具有名称,有“匿名管道”和“命名管道”。   管道与共享内存的区别 乍一看,感觉管道和共享...

Yngz_Miao的博客 4万+

LINUX管道

内核在处理管道数据的时候,底层也要调用类似read和write这样的方法进行数据拷贝,这种内核操作每次可以操作的数据量也是有限的,一般的操作长度为一个page,即默认为4k字节。它的特点是只能在父子进程中使用,父进程在产生子进程前必须打开一个管道文件,然后fork产生子进程,这样子进程通过拷贝父进程的进程地址空间获得同一个管道文件的描述符,以达到使用同一个管道通信的目的。管道,英文为pipe。对比以上两种方法,我们也可以理解为,管道本质上就是一个文件,前面的进程以写方式打开文件,后面的进程以读方式打开。

m0_55915945的博客 2145

linux——管道详解

管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常说的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间,这是它与有名管道的最大区别。有名管道叫named pipe或者FIFO(先进先出),可以用函数mkfifo()创建。 Linux管道的实现机制 在Linux中,管道是一种使用非常频繁的通信机制。从本质上说,管道也是一种文件,但它又和一般的文件有...

weixin_36670529的博客 6318

【Linux】命名管道

命名管道的内容和使用,以及和匿名管道的关系

s_little_monster的博客 8537

【Linux】管道

Linux进程间通信------管道

DanteKing的博客 2786

Linux之管道

从/etc/passwd文件中获取第7个字段(即用户的shell类型),然后使用sort命令排序,最后使用uniq命令统计每种shell类型出现的次数。其中,-F选项指定了字段分隔符为“:”,|符号表示将前面命令的输出作为后面命令的输入。当输出内容比较多时,为了方便浏览,竟可能输出内容,通过管道操作符,传递给more命令来分页查看,也可传递给grep命令实现对指定对象的查看。(匿名管道)之间唯一的区别在它们创建与打开的方式不同,一量这些工作完成之后,它们具有相同的语义。作为下一个命令的输入。

qq_57289939的博客 1570
上一篇: linux 进程管理
下一篇: 手搓哈希表
ghost_him
博客等级 码龄6年 598粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值