Ir para o conteúdo
Knitter

Como iniciar um script perl apartir de código C e receber o resultado?

Mensagens Recomendadas

Knitter    101
Knitter

Boas,

Preciso de iniciar um script em perl sobre um ficheiro de texto. O ficheiro será criado por código C, provávelmente, e o script será iniciado pelo mesmo código. O que preciso é saber como executar o script e receber o seu resultado.

Estou a desenvolver uma aplicação MPI em que o nó Master receber de outra aplicação um ficheiro de texto, esse ficheiro terá de ser enviado para os nós filhos e processado pelos mesmos. Como o problema se reduz a processamento intenso de expressões regulares, perl é a escolha perfeita. O que preciso agora é saber como iniciar o script de forma a conseguir que o código C a correr nos nós filhos receba o resultado do script, recupere o controlo e envie esses resultados para o nó Master.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
eatg75    24
eatg75

Crias um processo filho que ira executar o comando perl script.pl ou ./script.pl (se o script possuir um shebang e é executável) e fechas o STDOUT do processo filho e fazes o pipe do output do processo filho para dentro do processo pai.

Se não estou em erro vais precisar das seguintes funções: exec(), fork(), dup() e um array de inteiro o qual farás o binding do STDOUT e/ou STDERR do processo filho para dentro do processo pai.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

O caso que descreves parece relativamente simples (a interacção com o Perl é através de ficheiros), pelo que provavelmente será suficiente usares o popen.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade