Vie Jul 21, 2006 6:42 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 498
Ubicación: Frente al monitor
|
|
| PID en Windows ($$) |
|
|
Hola.
Tratando de hacer un tutorial, para poner aqui, me encontre en este problema.
Mirando uno ejemplos de Win32::Process::Info encontre que para saber el PID del programa no usan $$ si no que usan Win32::Ole, asi que, quiero saber el PID de el programa, ¿Uso $$ o uso Win32::Ole?
Gracias. |
|
|
|
Sab Jul 22, 2006 3:20 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4212
Ubicación: Valladolid, España
|
|
|
|
|
Sacado de Win32::API:
| Código: |
use Win32::API;
Win32::API->Import("kernel32", "int GetCurrentProcessId()");
$PID = GetCurrentProcessId(); |
pero me suena que tiene que haber otra forma... |
|
Sab Jul 22, 2006 9:10 am
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 498
Ubicación: Frente al monitor
|
|
|
|
|
al parecer si se puede usar $$ sin ningun problema, pue bien en el /t del pacquete lo ponen un codigo con esto. |
|
Sab Jul 22, 2006 10:32 am
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1390
Ubicación: México
|
|
| Re: PID en Windows ($$) |
|
|
| creating021 escribió: | Hola.
Tratando de hacer un tutorial, para poner aqui, me encontre en este problema.
|
Cuando tengas el tutorial si quieres mándalo a uriel@baboonsoftware.com para que lo ponga en el sitio
Saludos |
|
Jue Ago 03, 2006 6:18 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 498
Ubicación: Frente al monitor
|
|
|
|
|
Hola kidd, queres que lo reforme para que sea un tutorial de verdad?
Tengo el tiempo, solo dime si lo queres  |
|
Jue Ago 03, 2006 6:32 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1390
Ubicación: México
|
|
|
|
|
Estaría bien,
Saludos |
|
Vie Ago 11, 2006 6:22 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 498
Ubicación: Frente al monitor
|
|
|
|
|
| En que formato? |
|
Mar Ago 29, 2006 7:44 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 498
Ubicación: Frente al monitor
|
|
|
|
|
Otra pregunta, antes de publicar:
¿Este código trabaja como debería?
| Perl: | if($^O eq "MSWin32"){
use Win32:: Process:: Info;
my $proc = Win32:: Process:: Info-> new();
my @pids = $proc-> ListPids();
foreach my $pid (@pids){
print "$pid\s\s", join /\ s\ s/, $proc-> GetProcInfo($pid);
print "\n";
}
} |
Es que dudo del GetProcInfo($pid) ya que en el POD no lo trabajan así, si alguien tiene Windows me seria muy útil la respuesta para ponerle fín al tutorial  |
|

Mar Ago 29, 2006 8:21 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1390
Ubicación: México
|
|
|
|
|
Hola:
Muy bien, ejecuté el siguiente código en mi Windows XP:
| Perl: | #!/usr/bin/perl -w
use strict;
if($^O eq "MSWin32"){
use Win32:: Process:: Info;
my $proc = Win32:: Process:: Info-> new();
my @pids = $proc-> ListPids();
foreach my $pid (@pids){
print "$pid", join " ", $proc-> GetProcInfo($pid);
print "\n";
}
} |
Y obtuve el siguiente resultado:
| bash: | 0HASH(0x1a624ec)
4HASH(0x1a622c4)
652HASH(0x1a61eb0)
720HASH(0x19c0f3c)
748HASH(0x1a62798)
792HASH(0x1a6281c)
812HASH(0x1a626cc)
972HASH(0x1a61dd8)
1020HASH(0x1a62900)
1128HASH(0x1a61ff4)
1172HASH(0x1a627ec)
1240HASH(0x1a62108)
1492HASH(0x1a62084)
1748HASH(0x1a61ea4)
1848HASH(0x1a61dcc)
1856HASH(0x1a626f0)
1884HASH(0x19c0f78)
1896HASH(0x1a6203c)
1968HASH(0x1a62588)
1988HASH(0x1a61f64)
2036HASH(0x19c0f84)
220HASH(0x1a62804)
276HASH(0x19c0db0)
312HASH(0x1a623e4)
408HASH(0x1a51e60)
3240HASH(0x1a62198)
848HASH(0x1a626c0)
3524HASH(0x1a62264)
4040HASH(0x1a6215c)
1320HASH(0x1a628c4)
4044HASH(0x1a51e30)
3360HASH(0x1a6221c)
2388HASH(0x1a51ecc)
1092HASH(0x1a61d54)
3856HASH(0x1a62000) |
|
|

Mie Ago 30, 2006 2:27 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 498
Ubicación: Frente al monitor
|
|
|
|
|
El número antes del HASH.* es el PID, sale sin problema, el resto es porque sale como un hash, supongo así que con un hash queda bien.
Si no es mucha molestia, ¿Puedes intentar este orto?
| Perl: | #!/usr/bin/perl -w
use diagnostics;
if($^O eq "MSWin32"){
use Win32:: Process:: Info;
my $proc = Win32:: Process:: Info-> new();
my @pids = $proc-> ListPids();
foreach my $pid (@pids){
my %inf = $proc-> GetProcInfo($pid);
print "$pid => ", join "\n:\t", (sort keys %inf);
print "\n";
}
} |
Que pena.
Si no es asi, será con Data::Dumper  |
|


Mie Ago 30, 2006 3:04 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1390
Ubicación: México
|
|
|
|
|
Hola:
Ya ví donde está el problema. Al correr el siguiente código:
| Perl: | #!/usr/bin/perl -w
use diagnostics;
use Data:: Dumper;
if($^O eq "MSWin32"){
use Win32:: Process:: Info;
my $proc = Win32:: Process:: Info-> new();
my @pids = $proc-> ListPids();
foreach my $pid (@pids){
my $inf = $proc-> GetProcInfo($pid);
print Dumper ($inf);
}
} |
Obtengo el siguiente resultado (solamente te pongo los primeros tres procesos):
| Código: |
$VAR1 = [
{
'TerminationDate' => undef,
'QuotaNonPagedPoolUsage' => 0,
'ParentProcessId' => 0,
'Status' => undef,
'OSName' => 'Microsoft Windows XP Professional|C:\\WINDOWS|\\Device\\Harddisk0\\Partition1',
'CSName' => 'PETRITA',
'PeakPageFileUsage' => 0,
'PageFileUsage' => 0,
'QuotaPeakNonPagedPoolUsage' => 0,
'WorkingSetSize' => '16384',
'CreationDate' => undef,
'HandleCount' => 0,
'WindowsVersion' => '5.1.2600',
'PeakWorkingSetSize' => 0,
'MaximumWorkingSetSize' => undef,
'PeakVirtualSize' => '0',
'WriteOperationCount' => '0',
'SessionId' => 0,
'PrivatePageCount' => '0',
'ProcessId' => 0,
'Caption' => 'System Idle Process',
'CommandLine' => undef,
'OSCreationClassName' => 'Win32_OperatingSystem',
'Priority' => 0,
'MinimumWorkingSetSize' => undef,
'CreationClassName' => 'Win32_Process',
'ThreadCount' => 1,
'KernelModeTime' => '6985.2242592',
'ExecutionState' => undef,
'CSCreationClassName' => 'Win32_ComputerSystem',
'InstallDate' => undef,
'WriteTransferCount' => '0',
'OtherTransferCount' => '0',
'PageFaults' => 0,
'VirtualSize' => '0',
'QuotaPagedPoolUsage' => 0,
'ReadTransferCount' => '0',
'OtherOperationCount' => '0',
'ReadOperationCount' => '0',
'QuotaPeakPagedPoolUsage' => 0,
'ExecutablePath' => undef,
'UserModeTime' => '0',
'Name' => 'System Idle Process',
'Description' => 'System Idle Process',
'Handle' => '0'
}
];
$VAR1 = [
{
'TerminationDate' => undef,
'QuotaNonPagedPoolUsage' => 0,
'ParentProcessId' => 0,
'Status' => undef,
'OSName' => 'Microsoft Windows XP Professional|C:\\WINDOWS|\\Device\\Harddisk0\\Partition1',
'CSName' => 'PETRITA',
'PeakPageFileUsage' => 0,
'PageFileUsage' => 0,
'QuotaPeakNonPagedPoolUsage' => 0,
'WorkingSetSize' => '57344',
'CreationDate' => undef,
'HandleCount' => 293,
'WindowsVersion' => '5.1.2600',
'PeakWorkingSetSize' => 4161536,
'MaximumWorkingSetSize' => 1413120,
'PeakVirtualSize' => '32620544',
'WriteOperationCount' => '1663',
'SessionId' => 0,
'PrivatePageCount' => '28672',
'ProcessId' => 4,
'Caption' => 'System',
'CommandLine' => undef,
'OSCreationClassName' => 'Win32_OperatingSystem',
'Priority' => 8,
'MinimumWorkingSetSize' => 0,
'CreationClassName' => 'Win32_Process',
'ThreadCount' => 74,
'KernelModeTime' => '30.7842656',
'ExecutionState' => undef,
'CSCreationClassName' => 'Win32_ComputerSystem',
'InstallDate' => undef,
'WriteTransferCount' => '8228134',
'OtherTransferCount' => '1137136',
'PageFaults' => 8659,
'VirtualSize' => '1945600',
'QuotaPagedPoolUsage' => 0,
'ReadTransferCount' => '11143696',
'OtherOperationCount' => '12172',
'ReadOperationCount' => '310',
'QuotaPeakPagedPoolUsage' => 0,
'ExecutablePath' => undef,
'UserModeTime' => '0',
'Name' => 'System',
'Description' => 'System',
'Handle' => '4'
}
];
$VAR1 = [
{
'TerminationDate' => undef,
'QuotaNonPagedPoolUsage' => 640,
'ParentProcessId' => 4,
'Status' => undef,
'OSName' => 'Microsoft Windows XP Professional|C:\\WINDOWS|\\Device\\Harddisk0\\Partition1',
'CSName' => 'PETRITA',
'PeakPageFileUsage' => 1679360,
'PageFileUsage' => 172032,
'QuotaPeakNonPagedPoolUsage' => 1240,
'WorkingSetSize' => '98304',
'CreationDate' => 1156968300,
'HandleCount' => 21,
'WindowsVersion' => '5.1.2600',
'PeakWorkingSetSize' => 475136,
'MaximumWorkingSetSize' => 1413120,
'PeakVirtualSize' => '406568960',
'WriteOperationCount' => '4',
'SessionId' => 0,
'PrivatePageCount' => '172032',
'Owner' => 'NT AUTHORITY\\SYSTEM',
'ProcessId' => 652,
'Caption' => 'smss.exe',
'CommandLine' => '\\SystemRoot\\System32\\smss.exe',
'OSCreationClassName' => 'Win32_OperatingSystem',
'Priority' => 11,
'MinimumWorkingSetSize' => 204800,
'CreationClassName' => 'Win32_Process',
'ThreadCount' => 3,
'KernelModeTime' => '1.1416416',
'ExecutionState' => undef,
'CSCreationClassName' => 'Win32_ComputerSystem',
'InstallDate' => undef,
'WriteTransferCount' => '4',
'OtherTransferCount' => '910',
'PageFaults' => 493,
'VirtualSize' => '3915776',
'QuotaPagedPoolUsage' => 5272,
'OwnerSid' => 'S-1-5-18',
'ReadTransferCount' => '4122',
'OtherOperationCount' => '189',
'ReadOperationCount' => '9',
'QuotaPeakPagedPoolUsage' => 398312,
'ExecutablePath' => 'C:\\WINDOWS\\System32\\smss.exe',
'UserModeTime' => '0.0100144',
'Name' => 'smss.exe',
'Description' => 'smss.exe',
'Handle' => '652'
}
]; |
Me parece que este es el resultado que estás buscando.
Saludos |
|

Mie Ago 30, 2006 4:43 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 498
Ubicación: Frente al monitor
|
|
|
|
|
Claro, eso era, ahora te mando el tutorial en cuanto el código quede bien.
Gracias por la ayuda y verás que el tutorial al fín es algo útil, te enseña a hacer un ps -xa  |
|

Lun Sep 18, 2006 6:39 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 498
Ubicación: Frente al monitor
|
|
|
|
|
Que pena, tanto tiempo y no lo he terminado, lo que pasa es que como se hace una lista tan grande tengo que hacer una interface gráfica que ande en Windows y UNIX, para eso estoy usando ANSI Scape, y esta quedando muy bien, aunque tengo el problema de que sí estás en UNIX y eres usuario no puedes leer links, por ende no se puede saber el nombre del programa (se sabe el PID y que root lo ejecutó, pero nada más) y se le pone un texto en rojo para verlo más fácil.
Falta poco pero segúro que estra bueno, te lo mando en PDF cuando esté listo.
Una imagen, un poco fea porque la manipulan para que pese menos, Ahí se ve todo desde usuario (todo lo de root), el ¡ es quitado despues y si el usuario lo pide tira informacion (tendrá un prompt, modo de comando) y poco a poco va resultando.
Un saludo (al menos)
Click aquí para ver imagen |
|

Powered by phpBB © 2001, 2005 phpBB Group
|