larsen has asked for the wisdom of the Perl Monks concerning the following question:
As you can see, I maintain a hash for each child, containing a file handler that is used by the parent to read child's output. But this does not work, because the while-block that read child's output is blocking. This way doesn't seem to be worth further exploring. How could I realize what I've described at the beginning of this node?#!/usr/bin/perl use strict; use FileHandle; use Data::Dumper; my $childs = { A => { pid => undef, handler => undef, blabla => () }, B => { pid => undef, handler => undef, blabla => () }, C => { pid => undef, handler => undef, blabla => () } }; foreach my $name ( keys %{$childs} ) { $childs->{ $name }->{ handler } = new FileHandle; $childs->{ $name }->{ pid } = $childs->{ $name }->{ handler }->ope +n( "-|" ); if ($childs->{ $name }->{ pid }) { # The child's talking... while(my $line = $childs->{ $name }->{ handler }->getline()) { push @{$childs->{ $name }->{ blabla }}, $line; } } else { # Childs' STDOUTs are read by the parent print "Hi! I'm $name and I'm good!"; exit; } } print Dumper( $childs );
|
---|
Replies are listed 'Best First'. | |
---|---|
Re (tilly) 1: Coping with a large family (interprocess communication)
by tilly (Archbishop) on Apr 23, 2001 at 15:03 UTC | |
Re: Coping with a large family (interprocess communication)
by AgentM (Curate) on Apr 23, 2001 at 18:18 UTC | |
Re: Coping with a large family (interprocess communication)
by Rhandom (Curate) on Apr 23, 2001 at 18:52 UTC |