Parar Processo - Runtime.getRuntime().exec

2 respostas
O

Hail… eu estou com um problemão:

eu executei um .exe no qual esse é um processo que ficará ouvindo em uma determinada porta. Esse mesmo funciona pela shell (dos, unix, tanto faz)… só q para parar este processo simplesmente eu pressiono ctrl+C … blz… isso se esse mesmo for executado diretamente na shell.

Bom eu criei um programa no qual executa esse arquivo através do método Runtime.getRuntime().exec(); ok… ai o processo fica rodando na boa. Através do Gerenciamento de Tarefas ele táh lá. Agora, através de um botão na interface do meu programa eu tenho q PARAR esse processo!!! Mas não sei como?? Alguém tem idéia de como fazer isso??? de preferência trabalhando com a plataforma Windows.

Outra coisa, caso eu fazer a chamada para esse processo através de um arquivo bat??! já q junto com a chamada desse executável eu tenho q passar alguns parâmetros, como numero da porta por exemplo. No arquivo BAT eu colocaria essa linha:

storescp -v 104

a execução através do bat é blz … o problema mesmo está em parar o processo…

A chamada do processo está assim:

Runtime.getRuntime().exec("inicializa.bat");

Por favor… quem tiver idéia de como fazer isso me ajude…

2 Respostas

M

æ olavo_biffi, olha só fiz um exemplo pra vc.
Alí vc usa o notepad e abre um arquivo como o c:\boot.ini
e joga o processo pra um objeto Process, então vc tem todo o controle. podendo dar a qualquer hora um destroy.

public class RunExec extends JFrame implements ActionListener {

private static final long serialVersionUID = 1L;
  private JButton btnAtivaProg = new JButton("Run...");
  private JButton btnClose = new JButton("Sair");
  private Process pc;

  public RunExec(){
    super("Executa Aplicações");

    btnAtivaProg.addActionListener(this);
    btnClose.addActionListener(this);
	
    this.getContentPane().setLayout(new GridLayout(1,1));
    this.getContentPane().add(btnAtivaProg);
    this.getContentPane().add(btnClose);
		
    this.setBounds(10,10,200,100);
    this.setVisible(true);				
  }
	
  public static void main(String[] args) throws Exception{
    new RunExec();
  }

  public void actionPerformed(ActionEvent ev) {
    if (ev.getSource() == btnAtivaProg){
      try {
        pc = Runtime.getRuntime().exec("notepad.exe c:/boot.ini");
      } catch (IOException e) {}
    } else if (ev.getSource() == btnClose){
      if (pc != null) pc.destroy();
      System.exit(0);
    }		
  }
	
}

Abraço,
Maicon.

D

opa…

procure nao duplicar tópicos.
apesar de que eu acho q essa é a sulução q o Maicon deu é a mais correta, no outro tópico ja ta tendo uma conversa e tal…

entao, se tiver mais alguma dúvida sobre esse assunto de Runtime, poste no outro tópico:
http://www.portaljava.com/home/modules.php?name=Forums&file=viewtopic&p=43100

flw!
abraços!

Criado 21 de outubro de 2004
Ultima resposta 22 de out. de 2004
Respostas 2
Participantes 3