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


in reply to multiple processes

It looks like your FIFO is only used for the child to speak to the parent. Would a regular pipe serve better? It would be faster.

while (my $connection = $listen_socket->accept) { my ($pid, $line, $in, $out); pipe $in, $out or die $!; if ($pid = fork) { close($out); warn localtime(time), " Connection recieved ... ", $connection->peerhost, $/; $connection->close(); # microsleep till the kid's awake do { select undef, undef, undef,.001} until kill 0, $pid; + while(<$in>){$_ =~ s/a-z/A-Z/i;print $_;} close($in); } elsif (defined $pid){ close($in); $listen_socket->close; while(<$connection>){print $out $_;}; close($out); exit 0; } else { die "Error while forking: $@" unless defined $pid; } }
There may be a lot more to do to make this work with your real application, particularly if there is to be more than one connection at a time. In that case, the parent will need to listen on the socket and several pipes at once.

After Compline,
Zaxo