What jethro said: Only fork if you need to do something in both processes.
If that's the case, here is a working example:
#!/usr/bin/env perl use 5.014; use strict; use warnings; my $pid = fork; if (!defined $pid) { die "Cannot fork: $!"; } elsif ($pid == 0) { # client process say "Client starting..."; sleep 10; # do something useful instead! say "Client terminating"; exit 0; } else { # parent process say "Parent process, waiting for child..."; # do something useful here! waitpid $pid, 0; } say "Parent process after child has finished";
One thing to note is that fork returns undef on failure, and undef == 0 compares as true, so your error handling wouldn't work. To easily test the error case, start a new bash and set ulimit -u $number_of_allowed_processes, then start the perl script.
In reply to Re: using fork
by moritz
in thread using fork
by teamassociated
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |