Entrar    Registrar

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

Fórum para discussão sobre Linux para processadores ARM

Moderadores: guest2003, 51, Renie, gpenga

  • Autor
    Mensagem

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

Mensagempor andre_teprom » 20 Out 2017 18:34

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.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_teprom
Dword
 
Mensagens: 5084
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

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

Mensagempor tcpipchip » 20 Out 2017 20:09

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...
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 5418
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

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

Mensagempor barboza » 20 Out 2017 20:28

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"
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 933
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

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

Mensagempor Rodrigo_P_A » 20 Out 2017 22:01

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
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 1884
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

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

Mensagempor andre_teprom » 21 Out 2017 05:43

@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.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_teprom
Dword
 
Mensagens: 5084
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

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

Mensagempor pamv » 21 Out 2017 08:24

pamv
Byte
 
Mensagens: 339
Registrado em: 20 Jun 2016 21:47

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

Mensagempor andre_teprom » 21 Out 2017 10:01

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.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_teprom
Dword
 
Mensagens: 5084
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Voltar para Linux / uCLinux ( ARM ) / UNIX

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron