Java por si só inclui uma ampla coleção de classes com as principais funcionalidades que podemos precisar, se você não oferecer Na API, é muito possível que haja uma biblioteca que o fornecesse. Mas, em algum momento, talvez nos recebemos o caso de um comando de comando retorna as informações ou realiza a ação que precisamos. Pode ser um comando do sistema GNU / Linux, Windows ou Mac OS X ou um script em Java, Python, Ruby ou outra linguagem de programação. Através da classe Process e ProcessBuilder, é possível lançar um processo de qualquer comando de comando e acessar sua entrada padrão, saída padrão e saída de erro.
A classe de processo representa o processo que lançamos, temos dois Maneiras de obter uma referência esta aula, uma com runtime.getinstance (). EXEC () e outra com a classe ProcessBuilder com ambos, será possível estabelecer variáveis de ambiente, o diretório de trabalho ou redirecionar a entrada e saída. Referência obtida a uma instância do processo com o método GetInputStream (), leremos a saída padrão do processo, com GetErrorInputStream () a saída de erro e com GetToutPutStream () podemos enviar conteúdo para a entrada padrão. Outros métodos de utilidade nos permitirão saber se o processo ainda está vivo com Isalive (), obtenha o código de saída com o ExitValue (), espere que ele termine com WaitFor (). Finalmente, com destruir () podemos terminar abruptamente o processo.
Eles não são da notícia notável do Java 8, mas a partir desta versão você pode definir uma espera máxima para o término do processo, as variáveis de ambiente e O diretório de trabalho. E mais mudanças pequenas, mas muito úteis, pois estas terão sido adicionadas a outras classes da API.
Isso é possível fazer qualquer coisa que o sistema possa fazer de acordo com os comandos que instalaram ou podem ser instalados e Isso significa que está ao alcance do Java em um sistema GNU / Linux, o poder da sua linha de comando. Por exemplo, suponha que queremos saber em um programa Java o tempo que foi iniciado um sistema que seria útil se quisermos implementar algum tipo de métricas de monitoramento com o atuador de inicialização da mola. O Java não possui um método que fornece essas informações em sua API, no entanto, no GNU / Linux, podemos saber esses dados usando o sistema de arquivos virtual acessível em / proc, especificamente no arquivo / proc / uppertime. Este arquivo contém dois números O primeiro é aquele que nos interessaria sendo o número de segundos desde o início do sistema e o segundo a hora em que permaneceu em repouso. O segundo número em um sistema com um processador com vários núcleos físicos ou lógicos é provável que seja maior do que o primeiro.
|
Este seria o programa Java para saber quanto tempo um sistema GNU / Linux foi iniciado. Primeiro, o processo é criado, espera-se que termine e seu código de saída é obtido, a saída do processo é obtida (entrada para o programa), o resultado é processado e os segundos que o sistema começou.
|
|
maain.java
|
|
main.out
Executar um comando de comando nos dá acesso a um novo mundo de possibilidades, embora se pudermos melhor ter uma API disponível para invocar a funcionalidade que queremos, em vez de uma leitura de integração mais frágil e escrita na saída, erro e entrada do processo . No seguinte artigo baseado é isso, comentarei como enviar um email em Java digitalmente assinado com GPG, aplicando isso, aplicando o país e a cidade com base no endereço IP em um aplicativo da Web.
O código fonte completo da fonte pode baixá-lo no repositório Bitix Blog hospedado no GitHub e testá-lo no seu computador em execução em execução:
./gradlew run