On Thu, Apr 16, 2009 at 8:32 AM, Michael Alipio <daem0n...@yahoo.com> wrote:
>
> Hi,
>
> I have this code:
>
> die "Could not fork command1!" unless defined (my $command1_pid = fork);
> if ($command1_pid == 0){
>  open EXTERNAL_PROG1, "external_prog1 |" or die "Can't run external_prog1";
>
>  while (<EXTERNAL_PROG1>){
>    if (/pattern/){
>      die "Could not fork command2" unless defined (my $command2_pid = fork);
>      die "Could not fork command3" unless defined (my $command3_pid = fork);
>
>    if ($command2_pid == 0){
>       `external_prog2`
>     }
>    }
>     waitpid($command2_pid,0);
>
>    if ($command3_pid == 0){
>      `external_prog3`;
>    }
>     waitpid($command3_pid, 0);
>
>    }
> }
>
>
>
> That is, run external_prog1 and watch the output.. as soon as it sees a 
> particular pattern, run two other external commands at the same time. 
> However, with the above code, I keep getting duplicated external_prog2 
> process everytime i run the script. I need to track both PIDs of 
> external_prog2 and 3 as I need to kill them later in the code. However, i'm 
> having trouble running them at the same time.
> if I will put a "kill 15, $command3_pid" right after the first waitpid, i 
> will surely kill one of those two command 2 process. I tried several places 
> to put "die" lines and "waitpids" but I couldn't get it right. It's either 
> they don't run at the same time or they will run but command 2 has a twin 
> brother.
>
> Any idea how to solve this chicken and egg problem?
>

You have problems with scope.

At the top of your program, add

    use warnings;
    use strict;

The messages that are printed should solve your problem.

HTH,

-- j
--------------------------------------------------
This email and attachment(s): [  ] blogable; [ x ] ask first; [  ]
private and confidential

daggerquill [at] gmail [dot] com
http://www.tuaw.com  http://www.downloadsquad.com  http://www.engatiki.org

values of β will give rise to dom!

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to