最近、2 つのプロセス間で通信したいときに (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
. このようなコードを書く理由は、同じデータをソケットから取得し、実際に一度取得したいからです。
前もって感謝します。