2013-07-17 223 views
1

我有两个独立的脚本,我试图用管道机制如open($ fh,' - |',“ ./monitor.pl“)这里monitor.pl是子进程,它们都是异步执行的,同时执行。放置在子进程的while循环内部的命令的输出连续写入管道句柄缓冲区正在填满。所以请给我建议机制和适当的位置来刷新缓冲区,以便在缓冲区填满时子进程不会挂起。Perl缓冲区冲洗

+0

你在父母的过程中读了$ fh吗? –

+0

是在父进程中读取$ fh。 PLZ。你能建议我任何机制吗? – 7Srv

+0

因此,在阅读和处理数据时,孩子在提供数据方面比父母更快? –

回答

1

请参阅IO::Handle

$fh->autoflush(1); 

手动刷新:书写后

自动冲水

$fh->flush; 

Perl的版本低于5.14你还需要加载IO ::处理模块:

use IO::Handle qw(); 
+0

我应该在哪里使用此语句$ fh-> autoflush(1);就像打开这个'code'open($ fh,' - |',“./monitor.pl”); $ FH->自动冲洗(1); '代码' – 7Srv

+0

是............ – daxim

+0

上述机制在我的脚本方案中不起作用。子进程monitor.pl的执行是通过使用父进程打开的管道机制($ fh,' - |',“./monitor.pl”)来启动的。父进程可能执行几个小时,只要父进程异步执行,子进程必须也执行,但子进程在50分钟后挂起。我希望只要父进程执行2-3小时,子进程就应该写入管道句柄。 PLZ。建议我可以帮助我的任何机制。提前致谢。 – 7Srv