问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Unix管道机制

发布网友 发布时间:2022-04-27 14:58

我来回答

2个回答

热心网友 时间:2022-04-27 16:28

管道是一种进程间的通信机制,Windows 和 Linux(以及 UNIX)上都使用的这种机制。 管道源自“贝尔实验室”开发的 UNIX ,并且所有的 UNIX 和 Linux 都继承了这项技术。 管道是通过通常的 IO 接口存取的字节流。创建管道后,通过使用操作系统的任何读或写 IO 系统调用来读或者写它。在 UNIX 和 Linux 环境中,IO 调用是 read() 和 write() 。 在 Windows 环境中,API 是 ReadFile() 和 WriteFile() 。Windows 管道与 Linux 管道的区别在于 Windows 使用单一句柄(类似于 Linux 文件描述符)支持双向 IO。Linux 管道返回两个文件描述符来实现双向 IO。

管道(pipe)通信

主要用于大批量的信息传递,管道可用于同一用户的同祖先的进程间通信,而有名管道(FIFO管道)可用于不同用户进程间的通信。系统将管道文件作为通信的介质,构成两端进程传递信息的流水线。通常设定一个进程向管道中写信息,另一个进程从管道中读信息。

管道读写的特点:

(1)写操作

对管道写时,每次write调用操作的结果总是附加在管道的末端(而文件写可以通过调整指针随意进行);一次写入的字节数最好不要大于设定的系统常量PIPE_BUF;当设备处于忙状态时,write调用会被阻塞并被延迟执行。完成时将返回实际写入的字节数;当试图对一个没有被进程打开作为写的管道而进行write操作时,将生成SIGPIPE信号,并且系统公用变量errno的值被置为EPIPE,表示管道被破坏。

(2)读操作

所有的read调用总是从管道当前位置开始,即管道文件不支持搜索指针的移动;当管道中无信息时read系统调用被阻塞,但对空文件读时可返回空串并不发生阻塞;若管道未被其他进程以写方式打开,就对管道做read则返回0.

无名管道:由系统调用pipe创建,当pipe调用成功时将返回两个整形文件描述符filedes[0]和filedes[1],分别指向两个数据流。

传统unix系统命令创建的管道是单向的(半双工方式)此时数据传递的方向是单向的,即所创建的文件描述符一端只能用于读,另一端只能用于写,若需要双方数据传递时则需要建立两个管道文件。而现代unix中pipe系统调用可以返回两个全双工的文件描述符,即所建立的管道可同时用于读操作和写操作。若filedes[0]用来写,则filedes[1]用来读,若filedes[1]用来写,则filedes[0]用来读,而半双工时时固定的。

有名管道:本质上与无名管道在应用上是相同的,但有名管道具有一些其他的特点,如再有名管道生成时会在文件系统中生成一个目录表项,有了目录表项就有了文件访问权限的管理,就可以让其他进程对管道进行访问。有名管道可以在shell中创建也可以在程序中创建,创建有名管道的命令为:mknod

参考资料:http://hi.chinaunix.net/?14015773/viewspace-47837

热心网友 时间:2022-04-27 17:46

在使用的时候 很简单, "|" 比如 grep posix * | less
将检索出的结果通过管道输出到下一个程序中分页显示,使用管道可以将很多程序连接成一个大的工具。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
巧师傅榴莲千层蛋糕(6寸500g)-适用对象 巧师傅 榴莲千层蛋糕 6寸 500g-马来西亚苏丹王榴莲肉,口感鲜甜软糯_百... 巧师傅榴莲千层蛋糕500g-精选苏丹王榴莲果肉,口感浓郁 巧师傅苏丹王榴莲千层蛋糕-适用对象 阿卡丽和卡特琳娜,哪一个比较好。 英雄联盟阿卡丽和卡特琳纳哪个比较好…为什么? 求大神分析 阿卡丽和卡特琳娜单挑 谁会赢? 河北5+3临床医学有哪些学校 ...块数比20多,比40少,5块5块地数正好数完,2块2块地数也正好数完?_百... ...比20小,它3个3个数或4个4个数都正好数完,这个数是多少..._百度知... 梦见一个小女孩从楼上要掉下去? 6000工资要交税多少钱 日漫拍立得周边尺寸 C# 自定义的IHttpModule中如何获取当前Context的IHttpHandler的执行个体 点塑布和止滑布有什么区别? 硅胶点塑布和塑胶点塑布的区别 内衣上的硅胶防滑是什么 如何在Photoshop里把图片加上滚动的字幕 映客 ,看直播的时候为什么看不见评论和礼物,只能看见自己刷的和评论,倒是看回放就有,为什么?谢谢 纸上谈兵主要人物是? 箭牌智能马桶1108-2电源板烧糊了,它有什么用途? 电路板有什么用 复印机维修手册上的LGC板是什么,高压板,逻辑板,电源板,主板分别用什么英文简写?分别有什么用? T30KN18KDYB这个电源板是干啥用的? 电器上的电源板有什么用啊 自定义HttpModule后,资源文件(CSS,JS)不能加载 asp.net用httpmodule能拦截.html后缀的请求么 篮球鞋中什么是喷?? 那在贴吧的笑喷,喷饭又是什么?? iphone6怎么设置彩信?iphone6彩信收不到怎么办 苹果手机slm怎么拒收 自然界辐射有什么危害吗? 能给我一些象形文字不,比如谢,殷,爱,锐,瑾,你,我象形文字是什么? 帮忙找10个形声字,5个会意字,5个象形字~~~谢啦!! 甲骨文中谢和凯2字则么写???帮下忙啊!!! 这个象形字是什么呀?一年级语文,可怜妈妈崩溃中!!~谢大仙们!~ 请问这个象形字表示什么字?谢谢 请介绍一下玛雅文明。谢! 各位前辈,哪位可以告诉我图片中的“孔子”是那种造字法的文字,谢啦······ 求汉字的来源先谢啦 谢字草书怎么写 长江电力2022年分红比例 2008年7月份长江电力终于分红了 wood这个单词的发音是旺德吗? 树用英语怎么说读 wood是什么意思?读出来,是长音还是短音? Wood读什么, 竹子的英文单词是可数吗? 什么牌子的运动鞋有大号,比如47的 47 LN 052 195 E4 全合成长效机油(4升/VW 5W/30) ¥292.38 是什么牌子 电影杀手代号47中47用的手机 及他的西服外套是什么牌子 大概多少钱 还有他的手表 白衬衫