in reply to How to tell Child wait till Parent kill it

In the child process, set up a signal handler. A standard kill sends out the TERM signal, but you can wait for any signal, and react accordingly. Here's an example:

use strict; use warnings; $SIG{HUP} = \&sighup_handler; $SIG{TERM} = \&sigterm_handler; sleep(3600); sub sigterm_handler { die "Caught TERM, will not do anything!"; } sub sighup_handler { # commit changes to the database and exit }

- Luke

Replies are listed 'Best First'.
Re^2: How to tell Child wait till Parent kill it
by gjoshi (Sexton) on Nov 20, 2015 at 04:36 UTC
    Hi Luke, I am not getting where in my code i have to do this and how to do this?
    $SIG{HUP} = \&sighup_handler; $SIG{TERM} = \&sigterm_handler; #----------------------------- MAIN ---------------------------- print "I am the only process.\n"; my @children_pids; for my $count (1..3){ my $child_pid = fork(); print "PID: $child_pid \n"; if ($child_pid) { # If I have a child PID, then I must be the + parent push @children_pids, $child_pid; } else { # I am the child my $Child_PID = $$; print "CHILD's PID is: $Child_PID \n"; #doing something # writing into DB sleep $wait_time; } } print "\n ----- Main DB ---- \n"; foreach my $child (@children_pids) { print "Parent: Waiting on $child\n"; #check DB stats #send kill signal waitpid($child, 0); }
    thanks --girija