#!/usr/bin/perl -w my @gziplist = ( "msg.1","msg.2","msg.3","msg.4","msg.5","msg.6","msg.7","msg.8", "msg.9","msg.10"); my $pid; my $file; my @children; my $dead =0; $SIG{CHLD} = sub{$dead++; wait}; $SIG{TERM} = sub{ kill -9, @children; exit(0) }; # allow to end program by pressinc Ctrl-C or a kill call LOOP: for my $i ( 0..$#gziplist){ $file = shift(@gziplist); if($pid = fork()){ push @children, $pid; print " IN Parent spawned $pid for $file\n \n "; next LOOP; }elsif(defined $pid){ `gzip -9 $file`; print " \nIN child gzip for $file Command Result == $?\n "; exit(0); } } while($dead < 9){ }