Perl进程间通信
【今日推荐】:为什么一到面试就懵逼!>>> 不同进程之间的通信或进程间通信(InterProcess Communication, IPC),是一个涉及多个方面的主题。Perl提供了多种进程间通信的方式,本文将逐一介绍。本文的内容主体来自于《Pro Perl》的第21章。 单向管道(unidirectional pipe) 管道是两个文件描述符(文件句柄)通过一根管道连接起来,一端的文件句柄读,另一端的文件句柄写,从而实现进程间的通信。 Perl使用 pipe 函数可以创建单向管道,也就是一端只可读、一端只可写的管道,所以它需要两个文件句柄参数。 pipe READ_FH, WRITE_FH; 默认情况下,Perl会对IO进行缓冲,向写入端文件句柄写入数据时会暂时缓冲在文件句柄的缓冲中,而不会立即放进管道,也就是说读入端无法立即读取到这段数据。对于管道这种数据实时通信的机制, 应该关闭缓冲,而是让它在需要写入数据的时候立即刷到管道中 。 pipe READ_FH, WRITE_FH; # when write to WRITE_FH select WRITE_FH; $| = 1; # 或者使用IO::Handle设置autoflush(1) WRITE_FH->autoflush(1); 下面是一个父子进程间通过单向pipe通信的示例:父进程写、子进程读 #!/usr/bin