Ir para o conteúdo
ou

Software livre Brasil

Tela cheia Sugerir um artigo
 Feed RSS

Projeto Software Livre - Piauí

15 de Janeiro de 2010, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.

O PSL-PI tem por objetivo incentivar o uso e a produção de software livre no Piauí como política de combate à exclusão digital. Acreditamos que a distribuição de conhecimentos proporcionada pelo Open Source/Software Livre tornará nossa sociedade mais justa e próspera, exatamente por dar a todos as mesmas condições de conhecimento e desenvolvimento.

Software Livre é uma grande oportunidade de construirmos uma sociedade produtora de ciência, independente e efetivamente competitiva. Estamos reconstruindo as bases da nossa sociedade, não mais calcados nos braços do Estado, mas sim, amparados pela iniciativa própria, pela auto-determinação. Nós somos capazes de nos auto-governar. Somos capazes de construir uma sociedade efetivamente Livre. Esta é a essência do PSL-PI.

O PSL-PI é formado pela articulação de indivíduos que atuam em instituições publicas e privadas, grupos de usuários e desenvolvedores de software livre, empresas, governos ou ONGs, e demais setores da sociedade. O importante é a consciência e disposição para propagar o uso de software livre e a cultura colaborativa nas diferentes esferas da sociedade.


Marvin Lemos: Problema com java.lang.Process

1 de Novembro de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Após 4 dias enfrentando um problema com uma simulação escrita em Java, finalmente descobri a solução.

O que estava acontecendo era o seguinte: Em um trecho do meu código, chamava o método “Runtime.getRuntime().exec” para executar um programa externo,
mais precisamente um Shell Script. O script começava a ser executado perfeitamente, entretanto, em determinado momento, parecia que ele parava e nada mais acontecia. Pesquisando, através do Google, descobri um artigo que descrevia exatamente
como resolver o problema: http://kylecartmell.com/?p=9

O que acontece, na verdade, é que, segunda a API JAVA 6, o “output” do comando externo executado deve ser consumido imediatamente, mesmo que a sua aplicação não utilize. Caso esse procedimento não seja realizado, o sub-processo pode ser bloqueado ou mesmo entrar em deadlock.

Segue, abaixo, um exemplo que ilustra o que fiz para solucionar o problema:

import java.util.*;
import java.io.*;
class StreamGobbler extends Thread
{
    InputStream is;
    String type;

    StreamGobbler(InputStream is, String type)
    {
        this.is = is;
        this.type = type;
    }

    public void run()
    {
        try
        {
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String line=null;
            while ( (line = br.readLine()) != null)
                System.out.println(type + ">" + line);
            } catch (IOException ioe)
              {
                ioe.printStackTrace();
              }
    }
}

public class Principal
{

try {
            p = Runtime.getRuntime().exec("simulacao.sh");

            StreamGobbler errorGobbler = new
                StreamGobbler(p.getErrorStream(), "ERROR");

            // any output?
            StreamGobbler outputGobbler = new
                StreamGobbler(p.getInputStream(), "OUTPUT");

            // kick them off
            errorGobbler.start();
            outputGobbler.start();

            // any error???
            int exitVal = p.waitFor();
            System.out.println("Código de Retorno: "+exitVal);

        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).
log(Level.SEVERE, null, ex);
        } catch (InterruptedException ex) {
            Logger.getLogger(Main.class.getName()).
log(Level.SEVERE, null, ex);
        }
    }

Mais informações sobre problemas relacionados ao Process podem ser lidas AQUI.



Tags deste artigo: projeto software livre - piauí psl-pi piauí psl-nordeste