的叉子,我知道我能做到以下幾點:管道文件句柄自我
open(STDOUT, "|-", "cmd");
這大概結果如下:
fork();
exec("cmd");
- 鏈接原工藝STDOUT以STDIN的新工藝。
我想要做的是上面的第2步,即不要做exec()
。只需要將當前過程的兩個副本繼續進行,即將孩子的STDIN鏈接到父母的STDOUT。
那麼這將讓我繼續像這樣:
if (! $pid)
{
# Handle data in child here
open OUTFILE1 $file1;
open OUTFILE2 $file2;
my $i = 0;
while (<>)
{
print (i % 2 ? OUTFILE1 : OUTFILE2) "Line $i: $_";
++$i;
}
exit;
}
else
{
# Continue parent here
print STDOUT "Hello World from print()";
system("echo Hello World from system()");
}
上面的代碼應該由線到不同的文件(我知道或者行添加行號的輸出和寫這個數據這是一個有點愚蠢的,但它只是一個例子)。
有沒有一種方法或庫這樣做?我認爲perltie
,但它似乎並沒有處理來自system()
的結果,因此我相信我需要一個單獨的進程來實際管道STDOUT。
我已經編輯了希望使其更清晰的問題。 – Clinton 2013-02-15 07:56:45