编程学习biancheng.45soft.com 本站提供了各种在线教程和资料,供大家学习与参考.
编程学习
当前位置: 主页 > Perl > 进程间通讯 >

Perl 进程间通讯


计算机进程之间几乎有和人与人之间一样多的交流。我们不应低估进程间通讯的难度。如果你的朋友只使用形体语言,那么你光注意语言暗示对你是一点用都没有。同样,两个进程之间只有达成了通讯的方法以及建筑在该方法之上的习惯的共识以后才能通讯。和任何通讯一样,这些需要达成共识的习惯的范围从词法到实际用法:几乎是从用什么方言到说话的顺序的一切东西。这些习惯是非常重要的,因为我们都知道如果光有语义而没有环境(上下文),通讯起来是非常困难的。


在我们的方言里,进程间通讯通常念做 IPC。Perl 的 IPC 设施的范围从极为简单到极为复杂。你需要用哪种设施取决于你要交流的信息的复杂度。最简单的信息几乎就是没有信息:只是对某个时间点发生了某个事件的知晓。在 Perl 里,这样的事件是通过模拟 Unix 信号系统的信号机制实现的。


在另外一个极端,Perl 的套接字设施允许你与在互联网上的另外一个进程以任何你们同时都支持的协议进行通讯。自然,自由是有代价的:你必须通过许多步骤来设置连接并且还要确保你和那头的进程用的是同样的语言。这样做的结果就是要求你需要坚持许多其他奇怪的习惯。更准确地说,甚至还要求你用象 XML,Java,或 Perl 这样的语言讲话。很恐怖。


上面两个极端的中间的东西是一些主要用于在同一台机器上的进程之间进行通讯的设施。包括老派的文件,管道,FIFO,和各种 Sys V IPC 系统调用。对这些设施的支持因平台的不同而有所差异;现代的 Unix 系统(包括苹果的 Mac OS X)支持上面的所有设施,但是,除信号和 Sys V IPC 以外,Microsoft 操作系统支持剩下的所有的,包括管道,进程分裂,文件锁和套接字。(注:除了 AF_UNIX 套接字)。


关于移植的更多的一般性信息可以在标准的 Perl 文档集中找到 (不管你的系统里是什么格式),他们在 perlport 里。与 Microsoft 相关的信息可以在 perlwin32 和 perlfork 里找到,即使在非 Microsoft 的系统里都安装了它们。

Perl
Perl 进程间通讯