| Server IP : 139.59.63.204 / Your IP : 216.73.217.62 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ubuntu-s-1vcpu-1gb-blr1-01 6.8.0-110-generic #110-Ubuntu SMP PREEMPT_DYNAMIC Thu Mar 19 15:09:20 UTC 2026 x86_64 User : root ( 0) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /lib/x86_64-linux-gnu/perl5/5.38/Proc/ |
Upload File : |
$Proc::Killfam::VERSION = '1.0';
package Proc::Killfam;
use Exporter;
use base qw/Exporter/;
use subs qw/get_pids/;
use vars qw/@EXPORT @EXPORT_OK $ppt_OK/;
use strict;
use warnings;
@EXPORT = qw/killfam/;
@EXPORT_OK = qw/killfam/;
BEGIN {
$ppt_OK = 1;
eval "require Proc::ProcessTable";
if ($@) {
$ppt_OK = 0;
warn "Proc::ProcessTable missing, can't kill sub-children.";
}
}
sub killfam {
my($signal, @pids) = @_;
if ($ppt_OK) {
my $pt = Proc::ProcessTable->new;
my(@procs) = @{$pt->table};
my(@kids) = get_pids \@procs, @pids;
@pids = (@pids, @kids);
}
kill $signal, @pids;
} # end killfam
sub get_pids {
my($procs, @kids) = @_;
my @pids;
foreach my $kid (@kids) {
foreach my $proc (@$procs) {
if ($proc->ppid == $kid) {
my $pid = $proc->pid;
push @pids, $pid, get_pids $procs, $pid;
}
}
}
@pids;
} # end get_pids
1;
__END__
=head1 NAME
Proc::Killfam - kill a list of pids, and all their sub-children
=head1 SYNOPSIS
use Proc::Killfam;
killfam $signal, @pids;
=head1 DESCRIPTION
B<killfam> accepts the same arguments as the Perl builtin B<kill> command,
but, additionally, recursively searches the process table for children and
kills them as well.
=head1 EXAMPLE
B<killfam 'TERM', ($pid1, $pid2, @more_pids)>;
=head1 KEYWORDS
kill, signal
=cut