手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

Shell实现Unix进程间信息交换的几种方法

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
  使用命名管道实现进程间信息交换

  使用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] 下一页




文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS