Gostaria de saber sobre a utilizaçao de pipe para comunicação entre Threads, é possivel utilizar pipe para comunicar entre aplicações diferentes, executando na mesma máquina?
Utilização de Pipe
4 Respostas
Thread != Aplicação
No caso de 2 aplicações uma Pipe é uma comunicação unidirecional. Normalmente não é necessário nada especial, apenas que a primeira aplicação sempre escreva na saída-padrão (System.out) e a segunda sempre leia da entrada-padrão (System.in). Exemplo no Unix:
ls | more
Entre threads não costumo complicar, acabo trocando serviços atraves de listas sincronizadas e compartilhadas entre as threads.
Para comunicação entre aplicações usando pipe, dê uma olhadinha em http://www.inf.ufsc.br/~frank/INE5645/5.%20Comunicacao%20entre%20Processos.pdf
, nas pags 3 e 4 tem um exemplo legal.
Jeferson Flamini, obrigado pelo exemplo.
O meu problema é o seguinte tenho uma apliação (JNLP) que chama a execução de outra aplicação (JNLP), preciso que a aplicaçao chamada envie dados para a aplicação chamadora. Conseguir fazer a comunicação entre os aplicativos através de um arquivo comum, onde uma fica constantemente buscando informações, deste modo esta funcionando, mas gostaria de um método mais adequado, que não necessita acessar diretamente arquivo. Existe uma outra maneira de realizar a comunicação sem ser através de arquivo ou sockets?
Nesse caso você deve usar sockets mesmo, já que você tem 2 aplicações gráficas.
Não há uma forma “portável” de comunicação entre aplicações que não seja essa (sockets).
(Se fossem 2 aplicações Java iniciadas por um script, não JNLP, então poderíamos usar esses pipes.)