in reply to Re^2: IPC problem
in thread IPC problem

Hm, maybe. What version of Perl / IPC::Open3? What platform?  I can't reproduce the problem here (5.8.8 / 1.0106, Linux), so we'll have to wait until someone else can...

You have changed waitpid($pid2,0) too, have you? (which is what I implied, but didn't explicitly say)  (the problem with WNOHANG is that the process might not yet have terminated at that point, so you wouldn't get a valid return code).

Replies are listed 'Best First'.
Re^4: IPC problem
by gyre007 (Novice) on Oct 18, 2007 at 13:57 UTC
    (SunOS calcium 5.8 Generic_108528-23 sun4u sparc SUNW,UltraAX-i2///This is perl, version 5.005_03 built for sun4-solaris) Yes I have changed the code as You said...
    #!/usr/bin/perl use IPC::Open3; use POSIX qw( :sys_wait_h ); my $pid; my $cmd = "new.pl"; my $cmd2 = "new2.pl"; my $exit_code = 0; my $exit_code2 = 0; my $help = 0; my $help2 = 0; print "\n*******SPAWNING FIRST PROCESS**********\n"; $pid = open3(*MMRET_IN, *MMRET_OUT, *MMRET_ERR, $cmd); print "Process spawned with PID = $pid \n"; $help = waitpid($pid,0); print "HELP_VALUE is $help\n"; $exit_code = $? >> 8; print "ExitCODE is $exit_code \n"; print "Return_Value \$\? = $? \n"; print "\n*******SPAWNING SECOND PROCESS********\n"; $pid2 = open3(*MMRET_IN2, *MMRET_OUT2, *MMRET_ERR2, $cmd2); print "Process spawned with PID = $pid2 \n"; $help2 = waitpid($pid2,0); print "HELP_VALUE is $help2\n"; $exit_code2 = $? >> 8; print "ExitCODE is $exit_code2 \n"; print "Return_Value \$\? = $? \n"; print "********************************\n\n";
Re^4: IPC problem
by gyre007 (Novice) on Oct 18, 2007 at 14:02 UTC
    Yes, I have cahnged it as you suggested... Btw... SunOS 5.8 Generic_108528-23 sun4u sparc SUNW,UltraAX-i2 /// This is perl, version 5.005_03 built for sun4-solaris
    #!/usr/bin/perl use IPC::Open3; use POSIX qw( :sys_wait_h ); my $pid; my $cmd = "new.pl"; my $cmd2 = "new2.pl"; my $exit_code = 0; my $exit_code2 = 0; my $help = 0; my $help2 = 0; $pid = open3(*MMRET_IN, *MMRET_OUT, *MMRET_ERR, $cmd); print "Process spawned with PID = $pid \n"; $help = waitpid($pid,0); print "HELP_VALUE is $help\n"; $exit_code = $? >> 8; print "ExitCODE is $exit_code \n"; $pid2 = open3(*MMRET_IN2, *MMRET_OUT2, *MMRET_ERR2, $cmd2); print "Process spawned with PID = $pid2 \n"; $help2 = waitpid($pid2,0); print "HELP_VALUE is $help2\n"; $exit_code2 = $? >> 8; print "ExitCODE is $exit_code2 \n";
    Dunno...

      Hm, I don't have the problem on Solaris either... Tried it with

      SunOS solaris8 5.8 Generic_117350-20 sun4u sparc SUNW,Sun-Blade-2500 SunOS solaris10 5.10 Generic sun4u sparc SUNW,Sun-Blade-2500

      and Perl versions 5.8.8 ("ActivePerl"), 5.8.4 (self-built), and on Solaris 8 even with 5.005_03 (system-supplied). No problems...   Weird.