| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/08/2006 16:49:56
|
KolT
Debugger
Membro desde: 16/04/2005 13:17:18
Mensagens: 61
Localização: Brasília - DF
Offline
|
Bom, eu to desenvolvendo um projeto opensource e to tendo umas dúvidas sobre o funcionamento do Runtime.getRuntime();
primeiro tentei usar ele para executar o comandu mysqldump -u root teste > /home/kayo/teste.sql mas não executa. depois tentei para mysqldump -u root -p teste > /home/kayo/teste.sql e esse me retornava o pedido de senha.. mas mesmo assim não tive sucesso então usei para abrir o gedit(notepad no windows) e abriu.
então entendi que o Runtime serve para executar uma ação no sistema e não um comando/escrever na shell, to certo? Se sim, como posso então escrever na shell? Preciso saber porque a funão de backup tera duas variaveis que vão dizer a database para ser copiada e o destino para ser salvo, então não posso usar um .bat como já observei pelo fórum.
grato. [desculpa pergunta denovo sobre runtime, mas é que tenho urgencia..]
|
my life is free now; linux & java  |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/08/2006 18:37:10
|
jcatino
Thread.start()
![[Avatar]](/images/avatar/00482b9bed15a272730fcb590ffebddd.jpg)
Membro desde: 18/08/2005 17:41:10
Mensagens: 45
Localização: São Paulo
Offline
|
(Também respondi sua outra pergunta)
O Runtime.exec executa sim um comando do sistema operacional , então vai rodar num shell.
Só que vc deve se lembrar de ter o executável no PATH, e se não estiver, vc deve setá-la.
Veja a assinatura: exec(String cmd, String[] envp)
O 'envp' é um conjunto de Strings com as variáveis de ambiente (nome e valor) com as que a JVM vai setar o ambiente antes de executar o comando.
Você não precisa redirecionar a saída. Faça:
Process p = Runtime.exec("comando", strVariaveis);
e leia depois o stream no Process p, e poderá saber como foi executado o comando.
Este tipo de execução é síncrono, isto é, a JVM vai esperar ser executado até o fim para conitnuar a execução do programa.
|
--
J Catino
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/08/2006 18:41:36
|
jcatino
Thread.start()
![[Avatar]](/images/avatar/00482b9bed15a272730fcb590ffebddd.jpg)
Membro desde: 18/08/2005 17:41:10
Mensagens: 45
Localização: São Paulo
Offline
|
Ah para passar a senha, vc pode pegar o outputStream do processo (p.getOutputStream) e gravar nele: ele será a standard in do que foi acionado, então vc pode escrever a senha lá !
|
--
J Catino
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/08/2006 18:49:19
|
KolT
Debugger
Membro desde: 16/04/2005 13:17:18
Mensagens: 61
Localização: Brasília - DF
Offline
|
ahh entendi, então mysqldump seria uma posicao no array -u outra e assim por diante então? assim podendo executar um comando na shell? acertei ou vuei? =)
|
my life is free now; linux & java  |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/08/2006 18:55:51
|
jcatino
Thread.start()
![[Avatar]](/images/avatar/00482b9bed15a272730fcb590ffebddd.jpg)
Membro desde: 18/08/2005 17:41:10
Mensagens: 45
Localização: São Paulo
Offline
|
Não, o array é de variáveis de ambiente.
A sua senha não é uma variável de ambiente, seria um argumento a ser digitado após o início da execução do aplicativo.
O melhor mesmo é passar tudo na linha de comando. Se não funcionar, vc terá que abrir o outputStream do processo em execução para 'escrever' a senha sem ter que abrir uma tela de um editor.
Variáveis de ambiente seriam o caminho (PATH), caminho de bibliotecas necessárias, quando é requerido, ou alguma variável que o shell precise.
Ok ?
|
--
J Catino
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/08/2006 19:14:39
|
jcatino
Thread.start()
![[Avatar]](/images/avatar/00482b9bed15a272730fcb590ffebddd.jpg)
Membro desde: 18/08/2005 17:41:10
Mensagens: 45
Localização: São Paulo
Offline
|
Fiz um exemplo a partir do que entendi que seria seu caso, vê se ajuda a clarear como é executado...
| Nome do arquivo |
MyExec.java |
Download
|
| Descrição |
Um exemplo de execução |
| Tamanho |
2 Kbytes
|
| Baixado: |
80 vez(es) |
|
--
J Catino
|
|
|
 |
|
|