Eu tenho um programa compilado escrito em C ++ para um ambiente UNIX que possui esse tipo de estrutura:
int main(){
...
LoadEngine()
...
while(1){
std::cin >> buffer;
...
ExecuteFunction(buffer);
}
}
O carregamento do motor demora bastante, por isso estou a tentar iniciar primeiro o programa em segundo plano e, em seguida, enviar a entrada sempre que precisar.
Rodar o programa com o E comercial padrão anexado no final aparentemente não faz o programa rodar em segundo plano, mas pára em std :: cin até que uma entrada seja recebida do console, e pára depois que uma entrada é aceita no console.
Como executo o programa de forma que o programa seja executado continuamente em segundo plano e receba entrada e execute a função sempre que necessário?
EDIT : O produto final é um pequeno dispositivo (RaspberryPi) que reconhece a fala e faz algo com base nas palavras reconhecidas. O programa que eu tenho é a parte em que o dispositivo faz algo baseado na palavra input, e a palavra input corresponde à variável buffer do trecho de código acima.
Portanto, a parte std :: cin é um código de linha fictício que estou usando para testar se minha parte do código inicializa no processo em segundo plano (para carregar o mecanismo) e seja lá o que for projetado para fazer.
EDIT 2 : Para esclarecer o que estou tentando alcançar, o programa recebe uma entrada de um reconhecedor de fala e faz coisas (por exemplo, sintetizar fala de entrada, enviar sinais para LEDs, etc. ). A entrada de texto pode ser obtida diretamente do console (que meu código está atualmente fazendo), ou algum outro método que eu não conheço. A única coisa que a entrada adere é que deve ser um texto, e é enviado de outro programa que reconhece a fala (que é manipulado por algum outro desenvolvedor). Então, o método exato não é especificado. Tudo o que tenho que me preocupar é com o meu lado do programa, que executa uma função a partir de uma entrada de texto (por exemplo, buffer do snippet de código).
Então, a estrutura geral seria algo como isto:
Int main(){
LoadEngine()
while(1){
buffer = ReceiveInput();
ExecuteFunction(buffer);
}}
Onde a parte ReceiveInput () está atualmente implementada como std :: cin . Ele realmente pode ser qualquer método, desde que o mecanismo seja carregado uma vez no começo, e o programa seja capaz de executar ExecuteFunction a partir de uma entrada até que o dispositivo seja desligado.