On Mon, 30 Sep 2002 11:38:40 -0400, [EMAIL PROTECTED] (Jean-Pierre Sylvanie) wrote:
>Hi guys, > >I want to do a sub that check if a process is sleeping >or not... > >I wrote the following sub, but I was wondering if it >was possible to to it without shell calls... My top command dosn't allow for -U or $user. Maybe you meant to use ps ? >#################################################### >sub isSleeping{ > > # get PID of process to check > my $pid = shift || return 0; > > # get user name > my $user; > if(`id` =~ /\((\w+)\)/) {$user=$1}; > > # the 7th field (starting at 0) of top output is the state. > # top -b (for batch mode) -U $user (processes of $user). > my $state = (split /\s+/, (grep {/$pid/} `top -b -U $user`)[0])[7]; > > return $state eq "sleep"; >} > Try this Proc::ProcessTable method: ###################################################### #!/usr/bin/perl -w use strict; use Proc::ProcessTable; my $t = new Proc::ProcessTable; foreach my $p ( @{$t->table} ){ print $p->pid,"\t",$p->state,"\t",$p->cmndline,"\n"; } ####################################################### -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]