免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1235 | 回复: 0
打印 上一主题 下一主题

管道和有名管道 [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-06-23 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-14 23:27 |只看该作者 |倒序浏览

  管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系的进程间的通信
  管道的特点:管道是半双工的,数据只能向一个方向流动;需要双方通信,需要建立起两个管道。
             只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程)
             单独构成一种独立的文件系统;管道对于管道两端的形成而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。
                 数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道的缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。
   在bash shell 中,管道可用于输入重定向,它将一个命令的输出直接定向到另一个命令的输入
例如:find /etc/ -name ifcfg-* |wc -l 后,相应的shell程序将创建find以及wc两个进程和这两个进程间的管道。
有名管道(named pipo或FIFO),可以让不相关的进程也能交换数据
如果当前打开操作是为读而打开FIFO时,若已经有相应的进程为写而打开FIFO时,则当前打开操作将返回成功;否则,可能阻塞知道有相应的进程为写而打开该FIFO(当前打开操作设置了阻塞标志);或者,成功返回(当前打开操作没有设置阻塞标志)
如果当前打开操作是为了写而打开FIFO时,如果已经有相应进程为读而打开该FIFO,则当前打开草所将成功返回;否则,可能阻塞直到有相应进程为读而打开该FIFO(当前打开操作设置了阻塞标志);或者,返回ENXIO错误(当前打开操作没有设置阻塞标志)。
例如:tty1#mkfifo /tmp/popi-file
     tty2#cat /tmp/popi-file
     tty1#echo "input" >/tmp/popi-file
     tty1#srcipt -f /tmp/popi-file
     tty2#cat /tmp/popi-file
     tty1#ls (这时候在tty2上面就可以看到tty1上输出的信息,这个可以用来做广播教学!)   


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/94517/showart_1900352.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP