Runtime.getRuntime().exec(.. problemas

5 respostas
M

meu problema deve ser simples… (vou mostrar o codigo para ficar mais facil );

arquivo.bat

cd
cd arquivos de programas
cd firebird
cd Firebird_1_5
cd bin
gbak -v -t -user SYSDBA -password “masterkey” c:\teste.fdb c:\teste.fbk

codigo Java

Runtime RTMsdos = Runtime.getRuntime();
Process PProcesso = RTMsdos.exec("cmd /c " + this.Nome);

InputStream ISProcesso = PProcesso.getInputStream();
InputStreamReader ISRProcesso = new InputStreamReader(ISProcesso);
BufferedReader BFProcesso = new BufferedReader(ISRProcesso);

String Stringtemp = "";
while ((Stringtemp = BFProcesso.readLine()) != null) {
           System.out.println(Stringtemp);
}
			
BFProcesso = null;
ISRProcesso = null;
ISProcesso = null;
PProcesso = null;
RTMsdos = null;
System.out.println("acabou");

vou dizer agora oque acontece… ele executa ateh o penultimo ultimo comando… (eu consigo ler no System.out.println()… mas o ultimo ele mostra a execucao e nao mostra as milhares de linhas de resposta que deveria mostrar… (executando apenas o bat funciona)…

dai vem o mais estranho de tudo… seu eu for ver a aplicacao teste.fbk… ela ta lah… soh que com 0 kb… isso como o programa aberto… assim que eu fecho o programa… o arquivo fico com o tamanho certo que eh de 3 mb… alguem saberia me explicar isso…

sobre nao mostrar nada eu acho que eh por causa… do “cmd /c” -> /c pois eh pra ser comandos do windows… a ultimo exemplo eu coloquei um dir no lugar da ultima linha e mostrou tudo perfeitooo…

desde ja agradeco…
abraco…
e me ajudem por favor…

5 Respostas

H

Testei direcionar a saída padrão para um arquivo e fiquei acompanhando no windows explore o tamanho do aruivo q foi criado e realmente ele fica com 0 Kb equnto o programa não é encerrado, mas se vc precionar F5 durante a execução no explore o tamanho do arquivo é mostrado normalmente mesmo se o programa ainda está em execução.
Acho q isso pode ter acontecido com vc.

Flw.

M

cara… ja tinha testado isso… e por via das duvidas eu testei denovo… e nao funcionou…

cara se eu acrescentar o comando Runtime.getRuntime().exec(“cmd /c start arquivo.bat”) comando --> “start” ele executa blz (nao fica ocioso e logo o tamanho do arquivo atualizado) e jah da a resposta na hora… porem aparece aquele feia janela do command.exe…
que poderia assustar os usuarios…

o problema eh que ele fica ocioso no ultimo comando… eu acredito que seja porque as proximas linhas nao sao do windows como se eu desse um dir… que me listaria todas as pastas…(testei e funcionou) e sim pq as proximas linhas sao do exe gbak
gbak parameto 0- -dsf -dfs-fdv-df
— linhas –
gbak: dskfajdkl
bbak: jsfklaj
eh como se aquele comando nao tivesse um fim… ele fica paradooo…

jah tou pensando seriamente em criar uma dll pra fazer isso… mas o problema eh que vou ter que criar em um .c pro linux…dai eu nao sei C…

mas espero que agente ache a solucao aqui mesmo no java… a pensei em fazer um Thread que depois de um tempo executasse um runFinalization() do Runtime… sei lah… preciso muito disso…

obrigado
abraco

M

Para quem ficou curioso porque esta ficando ocioso… ai esta a resposta…
ele ficava ocioso… pois eram comandos internos… e comandos internos… normamelnte sao erros… entao eu soh mudei …
de getInput
para getError… e funcionou blz…
no windows… quando da certo ele costuma nao retornar nada…

M

Para quem ficou curioso porque esta ficando ocioso… ai esta a resposta…
ele ficava ocioso… pois eram comandos internos… e comandos internos… normamelnte sao erros… entao eu soh mudei …
de getInput
para getError… e funcionou blz…
no windows… quando da certo ele costuma nao retornar nada…

M

Para quem ficou curioso porque esta ficando ocioso… ai esta a resposta…
ele ficava ocioso… pois eram comandos internos… e comandos internos… normamelnte sao erros… entao eu soh mudei …
de getInput
para getError… e funcionou blz…
no windows… quando da certo ele costuma nao retornar nada…

Criado 24 de agosto de 2004
Ultima resposta 27 de ago. de 2004
Respostas 5
Participantes 2