Página 1 de 1

Como trocar dados ? ( shell -> C++ )

MensagemEnviado: 20 Out 2017 18:34
por andre_luis
Pessoal, estou tentando entender como que eu poderia sinalizar um status, de um script em Linux para um programa executável. Até agora esse recurso pareceu ser o que atende á minha necessidade: IPC:Shared Memory, mas os exemplos que vejo por aí afora baseado nessa solução são na maioria entre executáveis, ou os demais são extremamente complicados de se entender, o que eu estava procurando era algo bem simples, digamos apenas um semáforo. Alguem teria alguma dica de um link ? Até pensei em usar um simples arquivo de texto para trocar essa infomação, mas somente em ultimo caso, queria algo um pouco mais profissional digamos assim.

Re: Como trocar dados ? ( shell -> C++ )

MensagemEnviado: 20 Out 2017 20:09
por tcpipchip
Nao sei se eu entendi...voce quer pegar uma variavel de um processo ?

Esta semana eu me deparei com um problema...minha aplicacao php5 deveria mostrar dados produzidos por uma aplicação em PYTHON, pensei em numa possivel solucao, usar variaveis de ambiente, mas.......acabei fazendo o php5 chamar o python script e pegar o stdout...

Deu certo...o problema é que toda vez que quiser pegar os dados...tem que chamar o python...e demora um pouco para carregar...

Re: Como trocar dados ? ( shell -> C++ )

MensagemEnviado: 20 Out 2017 20:28
por barboza
O executável ficará rodando e esperando o sinal do shell script? Neste caso você poderia ter 2 .exe. Um fica rodando e esperando sinal via processos, o outro seria o sender, que ao ser chamado com o sinal como parâmetro, encaminha via processo ao outro. Poderia usar socket para isso.

Ou o shell script irá chamar o .exe quando necessário? Pois ai poderia ser só um parâmetro de chamada... "program.exe signal"

Re: Como trocar dados ? ( shell -> C++ )

MensagemEnviado: 20 Out 2017 22:01
por Rodrigo_P_A
andre_teprom escreveu:Pessoal, estou tentando entender como que eu poderia sinalizar um status, de um script em Linux para um programa executável. Até agora esse recurso pareceu ser o que atende á minha necessidade: IPC:Shared Memory, mas os exemplos que vejo por aí afora baseado nessa solução são na maioria entre executáveis, ou os demais são extremamente complicados de se entender, o que eu estava procurando era algo bem simples, digamos apenas um semáforo. Alguem teria alguma dica de um link ? Até pensei em usar um simples arquivo de texto para trocar essa infomação, mas somente em ultimo caso, queria algo um pouco mais profissional digamos assim.
Você quer ler o resultado de um script no seu programa?


Enviado de meu SM-A700FD usando Tapatalk

Re: Como trocar dados ? ( shell -> C++ )

MensagemEnviado: 21 Out 2017 05:43
por andre_luis
@barboza, assim como a solução via arquivo texto, ter 2 executáveis não sei se resolveria, pois eu não teria como saber quando ele terminou o processo do script ou se o mesmo foi bem sucedido, mas ainda que isso fosse possivel, o fato de ter de lidar com a solução retalhada em 2 codigos-fonte não me agradou em principio, gostaria de ter de compilar apenas 1 programa.

@Rodrigo, não exatamente o resultado, mas sim à sinalização de que o arquivo gerado pelo script já pode ser lido, caso contrário, sem isso eu não teria como saber se já foi superposto. Infelizmente não posso me basear pela data/hora, o sistema não possui RTC e retorna 00:00:00 para todas as gravações de arquivos, e assim não teria como saber quando estaria disponível uma atualização feita pelo script.

@Miguel, variaveis de ambiente eu até pensei em usar, mas tive receio por ser um recurso do sistema também utilizado para outras coisas, mas devido á aparente simplicidade talvez seria essa aí mesmo minha escolha; encontrei isso aqui que parece resolver: getenv. Estou perdendo algo, ou é realmente tão simples assim ? Meu receio é que o script ao empilhar essa variável junto com as outras do sistema acabe havendo um risco de destruir as demais já que estaria atualizando seu valor 2.880 vezes por dia.

Re: Como trocar dados ? ( shell -> C++ )

MensagemEnviado: 21 Out 2017 08:24
por pamv

Re: Como trocar dados ? ( shell -> C++ )

MensagemEnviado: 21 Out 2017 10:01
por andre_luis
pamv escreveu:Já deu uma olhada em named pipes?


Sim, e não havia entendido como ler em C++, mas procurando novamente vi que pode ser lido como um arquivo normal.
Enfim, pode ser que isso resolva.