Shell实现Unix进程间信息交换的几种方法
2008-02-23 05:37:38来源:互联网 阅读 ()
使用kill命令和trap语句实现进程间信息交换
使用点命令“.”实现进程间信息交换
使用export语句实现父进程对子进程的信息传递
一、使用命名管道
命名管道是一种先进先出(FIFO)的数据结构,他允许两个进程通过管道联接实现信息交换。在Unix系统中,命名管道是一种特别类型的文档,因此能够对命名管道进行读写操作;当然,同样也会有读写和执行等权限的限制。
通过下面的命令能够创建一个命名管道:
/etc/mknod pipe_name p
其中“pipe_name”是要创建的命名管道的名字,参数p 必须出现在命名管道名字之后。
命名管道文档被创建后,一些进程就能够不断地将信息写入命名管道文档里,而另一些进程也能够不断地从命名管道文档中读取信息。对命名管道文档的读写操作是能够同时进行的。下面的例子显示命名管道的工作过程。
进程A、B、C中运行的程式只是一条简单的echo命令,他们不断地把信息写入到命名管道文档/tmp/pipe1中。和此同时,程式中的“read msg” 命令不断地从命名管道文档/tmp/pipe1中读取这些信息,从而实现这些进程间的信息交换。
程式执行时,首先创建命名管道文档,此时程式处于等待状态,直到A、B、C进程中某一个进程往命名管道中写入信息时,程式才继续往下执行。使用rm命令能够删除命名管道文档从而清除已配置的命名管道。
下面是个用于记录考勤的例子:
在主机上运行的程式/tmp/text产生命名管道/tmp/pipe1,并不断地从命名管道中读取信息送屏幕上显示。
/tmp/text程式: if [ ! -p /tmp/pipe1 ] then /etc/mknode /tmp/pipe1 p fi while : do read msg if [ “$msg" = “" ] then continue else echo “$msg" fi done /dev/$tty read name today=‘date’ echo “$name\t$today" done > /tmp/pipe1 |
当雇员从终端上输入自己的姓名后,运行/tmp/text程式的主机将显示类似下面的结果:
wang Thu Jan 28 09:29:26 BTJ 1999 he Thu Jan 28 09:29:26 BTJ 1999 cheng Thu Jan 28 09:30:26 BTJ 1999 zhang Thu Jan 28 09:31:26 BTJ 1999 |
[1] [2] [3] 下一页
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇: 用Socket实现点对点的文档传输
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash