Problema ao executar comando no sistema operacional

1 resposta
I

Olá…

Meu problema é o seguinte…
Estou executando um comando no sistema operacional…
e… bem, há comandos que eu executo mas não faz nada no sistema,
são os comandos “cat arquivo.txt > /dev/lp0” no Linux e “copy arquivo.txt LPT1”. Quando executo esses comandos meu programa fica parado…
aguardando… se olho na lista de processos do OS, o comando está sendo executado, mas nada acontece… se faço na mão direto no OS funciona.
Outros comandos como “notepad.exe” no Windows e “kprinter” no Linux funcionam certo… mas cat e copy dá esse problema…

Se alguém tiver uma dica… agradeço…

Segue o fonte…

/**
Executa comando no Sistema Operacional
@param as_command
Comando a ser executado no Sistema Operacional.
@return
String contendo o retorno do comando executado, se retorno for ‘null’
indica que houve erro ao executar o comando.
*/
public static
String Command(String as_command){

//
        // Guarda o retorno do comando executado no sistema.
        //
        String            	
        ls_retorno		=	"";
        
        try{
            //
            // Abre um terminal com o sistema operacional...
            //
            Runtime
            lo_run_time		=	Runtime.getRuntime();
            
            //
            // Executa o comando e guarda o processo...
            //
            Process
            lo_prcs 			=	lo_run_time.exec(as_command);
        	            
            //
            // Área de entrada de dados que guarda o retorno do comando executado...
            //
            InputStreamReader
            lo_isr 			=	new InputStreamReader(lo_prcs.getInputStream());

            //
            // Buffer com o retorno do comando...
            //
            BufferedReader
            lo_buffer		=	new BufferedReader(lo_isr);
            
            //
            // Laço que percorre o buffer lendo as linhas retornadas pelo comando... 
            //
            String line;
            while ((line = lo_buffer.readLine()) != null)
            {
                	ls_retorno		+=	line;
            }
            
            //
            // Se não houve erro, is_erro fica nulo...
            //
            is_erro			=	null;
        }catch(java.io.IOException ioe){
            
            //
            // Alimenta com o erro ocorrido...
            //
            is_erro			=	ioe.getMessage();
            //
            // Seta null no retorno do comando, indicando que houve erro na execução do comando...
            //
            ls_retorno		=	null;
        }
        return	ls_retorno;

1 Resposta

wbsouza

crie uma Thread para executar o comando.

[]s, Welington B. Souza

Criado 15 de fevereiro de 2005
Ultima resposta 15 de fev. de 2005
Respostas 1
Participantes 2