最近,当我想在两个进程之间进行通信时,我在使用 (pipe |-) 时遇到了问题。基本上,子进程无法像父进程那样快速处理 STDIN。这导致父进程等到 STDIN 空闲并使其运行缓慢。
STDIN 可以有多大,是否可以修改它。如果是,最佳实践规模是多少?
这是一些代码示例来说明我的意思:
if ($child_pid = open($child, "|-"))
{
$child->autoflush(1);
# PARENT process
while (1)
{
# Read packet from socket save in $packet
process_packet($packet);
# forward packet to child
print $child $packet;
}
}
else
{
die "Cannot fork: $!" unless defined $child_pid;
# CHILD process
my $line;
while($line = <STDIN>)
{
chomp $line;
another_process_packet($line);
}
}
在这个样本中another_process_packet
比process_packet
. 我这样写代码的原因是,我想使用来自套接字的相同数据并实际获取一次。
提前致谢。