#!/usr/bin/perl

# killpid - kill given processes with SIGTERM else SIGKILL
# Randal Schwartz, merlyn@iwarp.intel.com
# Steve Kinzler, steve@kinzler.com, Sep 93
# https://kinzler.com/me/home.html#unix

$| = 1;

die "usage: $0 pid ...\n" if ! @ARGV || grep(/\D/, @ARGV);

&prunedone();

print "kill -TERM @ARGV\n";
kill 15, @ARGV;

for (1 .. 5) {
	sleep 2;
	&prunedone();
}

print "kill -KILL @ARGV\n";
kill 9, @ARGV;

for (1 .. 5) {
	sleep 2;
	&prunedone();
}

print STDERR "@ARGV will not die!\n";

exit 1;

sub prunedone {
	@ARGV = sort grep(kill(0, $_), @ARGV);
	exit 0 if $#ARGV < 0;
}
