2013-07-17 294 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