This is most powerful method with fork creating two identical copies of program -- parent and child
|
unless (fork) { ;} # child indicated by fork=0
|
; # otherwise fork=child process number for parent
|
The child program typically invokes exec which replaces child original by the argument of exec. Meanwhile parent should wait until this exec is complete and child has gone away.
|
unless (fork) {
-
exec("date"); # child process becomes date command sharing environment with parent
|
}
|
wait; # parent process waits until date is complete
|
The child process need not terminate naturally as with exec() and if child code was for instance
|
print FILEHANDLE @hugefile; # in parallel with parent
|
exit; # is required else child will continue with parents code whereas we wanted parent and child to work in parallel on separate jobs
|