http://qs1969.pair.com?node_id=493713


in reply to Re: How to tell a child what to do?
in thread How to tell a child what to do?

You are surprisingly right,

I somehow always regarded

$pid = open(KID_TO_WRITE, "|-");
trick as a way to talk with only one child, but if we rewrite it like this:
$fh = new FileHandle; my $sleep_count = 0; do { $pid = open($fh, "|-"); unless (defined $pid) { warn "cannot fork: $!"; die "bailing out" if $sleep_count++ > 6; sleep 10; } } until defined $pid; my (@some_data)=qw[a be ce]; if ($pid) { print $fh @some_data; close($fh) || warn "kid exited $?"; } else { while (<STDIN>) { print "GOT: $_\n"; # child's STDIN is parent's KID } exit; # don't forget this };
then we get to hold whole array of different $fd's, each for talking with one child. This would be clean and reliable, exactly what I wanted.

Thanx.