Linux interrompe processo [RESOLVIDO]

Pessoal estou rodando uma instrução atraves da classe Runtime no linux. Ja usei a ProcessBuilder tambem, mas o erro é o mesmo.

Acontece que ela interrompe o processo do nada, nao da exception nao faz nada é como se alguem desse um kill nesse processo.
O codigo que eu uso é simples de tudo

ProcessBuilder pb = new ProcessBuilder("comando que eu executo");	
	try {			
		Scanner scanner = new Scanner(pb.start().getInputStream());
// aqui a aplicacao para, porem ela executa por um determinado tempo normal, depois para derrepente
		while(scanner.hasNext()){
			System.out.println(scanner.nextLine());
		}
// o codigo nunca chega aqui
		} catch (Exception e) {
			e.printStackTrace();
// nem aqui
		}
// nem aqui

Alguem ja viu isso?

O problema eh que, provavelmente o processo que roda o seu programa esta tentando escrever para stdout ou stderr.
Isso causa o seu programa “travar”.
A solucao mais simples eh usar o metodo redirectErrorStream do ProcessBuilder. Isso eh “setado” falso por default, mas se vc colocar “true” significar que output e error vao utilizar a mesma stream.

Tenta adicionar isso no seu codigo e veja se funciona.

Ai vai o seu codigo modificado:


ProcessBuilder pb = new ProcessBuilder("comando que eu executo");     

pb.redirectErrorStream(true); // adiciona isso no seu codigo.

try {             
     Scanner scanner = new Scanner(pb.start().getInputStream());  

     while(scanner.hasNext()){  
         System.out.println(scanner.nextLine());  
     }  

} catch (Exception e) {  
     e.printStackTrace();  
}  

//Daniel

Entendi, vou testar aqui e mais tarde falo o resultado.

Obrigado!

Fiz o teste aqui e o problema continua.

O processo que tento rodar é o sql plus. São sempre 3 arquivos .sql.

O primeiro passa normal e o segundo começa a passar e para no meio do caminho, sem exception, sem mensagem, sem nada.

Outra sugestão?

so pra constar no autos rsss

A instrução funciona perfeitamente no windows.

Ooook. Entao funciona no windows mas trava no linux. =/

Estranho… =/

Infelizmente agora eu nao tenho nenhuma maquina linux para testar, mas quando eu chegar em casa eu tento fazer uns testes.

//Daniel

Soh pra testar tentar rodar a parte que vc le a stream em outra thread.

//Daniel

Cara consegui resolver.

So risadas, tinha um maldito de um processo no servidor linux com um comando killall java que matava minha aplicaçao exatamente no momento que rodava o comando no runtime, foi tenso! hauhauhau

Obrigado mesmo pela sua ajuda!

tenha um otimo feriado!

Opa! Legal que funcionou!

Feliz em ter ajudado!

t+

:slight_smile: