文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>shell实现Unix进程间信息交换的几种方法

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

时间:2008-05-10  来源:sdccf

iTbulo.COM

本文将介绍在SCOOpenServer5.0.5系统中使用shell语言来实现进程间信息交换的几种方法:

使用命名管道实现进程间信息交换

使用kill命令和trap语句实现进程间信息交换

使用点命令“.”实现进程间信息交换

使用export语句实现父进程对子进程的信息传递

一、使用命名管道
  命名管道是一种先进先出(FIFO)的数据结构,它允许两个进程通过管道联接实现信息交换。
在Unix系统中,命名管道是一种特殊类型的文件,因此可以对命名管道进行读写操作;当然,同样
也会有读写和执行等权限的限制。

  通过下面的命令可以创建一个命名管道:
  /etc/mknodpipe_namep

  其中“pipe_name”是要创建的命名管道的名字,参数p必须出现在命名管道名字之后。

  命名管道文件被创建后,一些进程就可以不断地将信息写入命名管道文件里,而另一些进程也
可以不断地从命名管道文件中读取信息。对命名管道文件的读写操作是可以同时进行的。下面的例子
显示命名管道的工作过程。

  进程A、B、C中运行的程序只是一条简单的echo命令,它们不断地把信息写入到命名管道文件
/tmp/pipe1中。与此同时,程序中的“readmsg”命令不断地从命名管道文件/tmp/pipe1中读取这些
信息,从而实现这些进程间的信息交换。

  程序执行时,首先创建命名管道文件,此时程序处于等待状态,直到A、B、C进程中某一个进程往
命名管道中写入信息时,程序才继续往下执行。使用rm命令可以删除命名管道文件从而清除已设置的
命名管道。

  下面是一个用于记录考勤的例子:

  在主机上运行的程序/tmp/text产生命名管道/tmp/pipe1,并不断地从命名管道中读取信息送屏幕
上显示。

/tmp/text程序:
if[!-p/tmp/pipe1]
then
/etc/mknode/tmp/pipe1p
fi
while:
do
readmsg
if[“$msg"=“"]
then
continue
else
echo“$msg"
fi
done
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载