hello all, i'm having some issues with subroutines being ran on a forked 
process. the subroutines have print statements which i would like to have 
printed to stdout in a format similar to:

"\nthis is my message\n\n"

however, the print format is not as controlled as it is when i do not 
fork. sometimes my command line is returned before the final print 
statement in the loop. i'll see my first three prints, and then my command 
line prompt, with the fourth print statement appearing after the prompt.

do i need a wait() statement? and if so, where? i'm not too familiar with 
the function. thanks -c


my code:

#!/usr/bin/perl -w

use strict;

  ## declare a pid for forking
  my $pid;
 
  ## loop through devices
  for my $node(@devices) {

    ## if child process exists, move to next device
    if ($pid = fork) {
      next;

    ## begin actions within the child process
    } elsif(defined($pid)) {

      ## print a message
      &log_action($node);

      ## explicit exit for child process
      exit;

    } else {
  
      die "Cant fork for some reason! : $!\n";

    ## endif
    }

  ## end of for loop
  }

sub log_action {

  my $i = shift;

  print "\nThis message if for node $i.\n\n";

}


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to