if (my $pid1 = fork()) { wait; return; } elsif (defined($pid1)) { # Child if (my $pid2 = fork()) { # Still Child exit(0); } elsif (defined($pid2)) { # Grandchild exec(...); } else { die "Fork error: $!\n"; } } else { die "Fork error: $!\n"; }