zentara has asked for the wisdom of the Perl Monks concerning the following question:
############################################################!/usr/bin/perl use warnings; use strict; use IPC::Open3; use Tk; my $pid = shift; my $pid1 = open3(0, \*READ,0,"top -d 1 -b -p $pid "); waitpid($pid1, 1); my $sizeold = 0; my $mw = new MainWindow; $mw->overrideredirect(1); my $t = $mw->Text(-width=>25, -height=>1, -bg=>'black',-fg=>'yellow')- +>pack; my $id = Tk::After->new($mw,50,'repeat',\&refresh); MainLoop; sub refresh{ my @words = split(/\s+/,<READ>); $words[0] ||= 0; if($words[0] =~ /$pid/){ $t->delete('1.0','end'); $t->insert('end',"PID: $pid -> $words[4]"); if($words[4] != $sizeold){print chr(07)} $sizeold = $words[4]; } }
#!/usr/bin/perl use warnings; use strict; use Tk; use Proc::ProcessTable; #Dosn't give same size as top ? my $sizeold = 0; my $pid = shift; my $t = new Proc::ProcessTable; my $p; foreach my $p1 (@{$t->table}){ if($p1->pid =~ /$pid/){ $p = $p1 } } my $mw = new MainWindow; $mw->overrideredirect(1); my $text = $mw->Text(-width=>25, -height=>1, -bg=>'black',-fg=>'yellow +')->pack; my $id = Tk::After->new($mw,50,'repeat',\&refresh); MainLoop; sub refresh{ $text->delete('1.0','end'); my $insert= 'PID: '.$p->pid.' -> '.$p->size; $text->insert('end',$insert); if($p->size != $sizeold){print chr(07)} $sizeold = $p->size; # print $p->pid," ",$p->cmndline," ",$p->size,"\n"; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: top size output not matching Proc::ProcessTable
by liz (Monsignor) on Mar 14, 2004 at 22:48 UTC | |
|
Re: top size output not matching Proc::ProcessTable
by tachyon (Chancellor) on Mar 14, 2004 at 23:07 UTC | |
|
Re: top size output not matching Proc::ProcessTable
by zentara (Cardinal) on Mar 15, 2004 at 16:04 UTC |