Criando uma aplicação que mostra os processos em execução

Bom amigos, nesse artigo vou mostrar como criar uma aplicação que mostra os processos que estão em execução no Linux utilizando o Kylix. É bem simples!

[ Hits: 10.364 ]

Por: Perfil removido em 08/01/2004


Introdução



Bom amigos, primeiramente vamos criar uma nova aplicação. No form1 vamos inserir um componente listview, em seguida vamos clicar em cima da listview1 com o botão direito do mouse e deveremos selecionar o Columns Editor. Agora vamos adicionar 5 colunas. Veja no exemplo abaixo:

Editing ListView1.Columns

0 - PID
1 - Term
2 - Status
3 - Tempo
4 - Linha

O tamanho das colunas devem ficar dessa forma na caixa de propriedades:

PID                 Width: 50
Term                Width: 50
Status              Width: 50
Tempo               Width: 50
Linha de Comando    Width: 500

Agora vamos criar um botão com caption chamado "Processos". Vamos à programação: clique duas vezes sobre o botão.

Vamos declarar na diretiva uses o libc, se essa não for declarada, sua aplicação não poderá extrair dados do sistema. Veja o código abaixo:

interface

uses
  SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls, QComCtrls, Libc;

Agora vamos voltar para a procedure do botão:

procedure TForm1.Button1Click(Sender: TObject);
var
  Processos : PIOFile;
  Linha : Array[0..254] of Char;
  LinhaStr : String;
  PosAtu : Integer;
begin
// limpa a Listview
  ListView1.Items.Clear;
// habilita o pipe para leitura para iniciar a  listagem de processos
   Processos := popen('ps axh', 'r');
// processa enquanto puder ler linhas
  while fgets(Linha,255,Processos) <> nil do begin
// converte o PChar para String para facilitar a manipulação dos dados
    LinhaStr := Trim(String(Linha));
    with Listview1.Items.Add do begin
// coloca o inicio da linha em um caption
    PosAtu := Pos(' ',LinhaStr);
    if PosAtu <> 0 then begin
    Caption := Copy(LinhaStr,1,PosAtu-1);
    LinhaStr := Trim(copy(LinhaStr, PosAtu,
    Length(LinhaStr)));
    end
    else begin
    Caption := LinhaStr;
    LinhaStr := '';
    end;
// o restante da linha coloca nos sub-ítens
    while LinhaStr <> '' do begin
    PosAtu := Pos(' ',LinhaStr);
    if PosAtu <> 0 then begin
    SubItems.Add(Copy(LinhaStr,1,PosAtu-1));
    LinhaStr := Trim(copy(LinhaStr, PosAtu,
    Length(LinhaStr)));
    end
    else begin
    SubItems.Add(LinhaStr);
    LinhaStr := '';
    end;
    end;
    end;
  end;
// fecha pipe
  pclose(Processos);
end;

Pronto! Agora é só executar o programa e visualizar os processos.

---------------------------------
Viva a liberdade dos códigos
---------------------------------
Master Foca.

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Criando Arrays, Arrays Multidimensionais e Hashes em BASH Script

Prevenindo problemas com impressoras via Samba no Windows

Algoritmo... como fazer?

Funtoo Linux - Arquivo /etc/boot.conf

Criando um álbum de fotos no Linux

Leitura recomendada

Cross-compile Lazarus: Gerando executáveis Win32 estando no Linux

Aprendendo a modelar forms no Kylix

Colocando aplicação Kylix no TrayIcon do KDE

Integrando saídas de comandos shell com sua aplicação Kylix

TCollection e Generics no Free Pascal - Uma breve visão sobre lista de objetos com o Lazarus

  
Comentários
[1] Comentário enviado por lorinho em 08/01/2004 - 21:39h

eu uso o slackware em modo texto, e gostaria de saber como eu faço para listar todos os procesos organizadamente dizendo o nome do login o nome do processo sem listar os processos do linux como o ps -aux =] se souber me informe ficarei mto grato! =] ou mandem um Email RodrigoDCamara@hotmail.com


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts