#!/usr/bin/perl use strict; $|++; my $pid = fork(); if ($pid) { # the parent does not exit prematurely when the handler # is set to IGNORE $SIG{CHLD} = sub { print "$$: Reaping a child process in child signal handler ...\n" }; print "$$: Parent sleeping 5 seconds at [".localtime()."] ...\n"; sleep 5; print "$$: That was refreshing. The time is now [".localtime()."].\n"; exit(0); } else { print "$$: \tChild sleeping for 2 seconds ...\n"; sleep 2; print "$$: \tChild exiting at [".localtime()."] ...\n"; exit(0); } #### 3978: Child sleeping for 2 seconds ... 3977: Parent sleeping 5 seconds at [Tue Jan 14 14:17:11 2003] ... 3978: Child exiting at [Tue Jan 14 14:17:13 2003] ... 3977: Reaping a child process in child signal handler ... 3977: That was refreshing. The time is now [Tue Jan 14 14:17:13 2003].