In this code below, when I am fork ing, depending on the $pid value the if and elsif should be executed, but here I see that the print statement in the if block is also getting satisfied alongwith the elsif block which calls the sub1 ().
Can anybody please explain ?
use strict; use warnings; print "Starting main program\n"; my @childs; for ( my $count = 1; $count <= 3 ; $count++) { my $pid = fork(); if ($pid) { # parent print "pid is $pid, parent $$\n"; push(@childs, $pid); } elsif ($pid == 0) { # child sub1($count); exit 0; } else { die "couldnt fork: $!\n"; } } foreach (@childs) { my $tmp = waitpid($_, 0); print "done with pid $tmp\n"; } print "End of main program\n"; sub sub1 { my $num = shift; print "started child process for $num\n"; sleep $num; print "done with child process for $num\n"; return $num; }
In reply to how come both the if and elsif block getting executed ? by ghosh123
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |