我知道我可以做到以下几点:
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 传输到。