1 |
This is most powerful method with fork creating two identical copies of program -- parent and child
|
2 |
unless (fork) { ;} # child indicated by fork=0
|
3 |
; # otherwise fork=child process number for parent
|
4 |
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.
|
5 |
unless (fork) {
-
exec("date"); # child process becomes date command sharing environment with parent
|
6 |
}
|
7 |
wait; # parent process waits until date is complete
|
8 |
The child process need not terminate naturally as with exec() and if child code was for instance
|
9 |
print FILEHANDLE @hugefile; # in parallel with parent
|
10 |
exit; # is required else child will continue with parents code whereas we wanted parent and child to work in parallel on separate jobs
|