Programa que sai na hora certa [RESOLVIDO]

1. Programa que sai na hora certa [RESOLVIDO]

Rafael Sampaio
9u31220

(usa Linux Mint)

Enviado em 13/08/2013 - 01:20h

Fala aí galera do VOL

Preciso fazer um programinha em C que fica repetidamente executando uma mesma tarefa, cada tarefa pode levar de alguns segundos até uns 3 minutos.

Quando eu quiser sair o programa não pode sair a qualquer momento, eu gostaria de enviar algum sinal de desligamento e o programa só sairia quando teminasse a tarefa que estivesse fazendo. Alguém poderia me dar a direção de como fazer isso?

Obrigado


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 13/08/2013 - 02:52h

Existem várias formas de fazer isso que você falou. Porém, seria interessante você dar mais detalhes sobre como as tarefas serão executadas (várias em paralelo, uma de cada vez, tempo de pausa entre elas etc.), se as tarefas tem de executar como threads num mesmo processo ou como processos filhos distintos, e em qual sistema operacional quer fazer isso (UNIX, Windows, MacOS, Android etc.), pois essas informações ajudam a escolher a melhor abordagem.

Técnicas que podem ser usadas: sinais, comunicação via sockets, fifos (named pipes), memória compartilhada, semáforos, ou mesmo a simples existência de um determinado arquivo (que poderia ser criado/removido manualmente ou por outro programa).

No mundo UNIX, o utilitário cron faz algo parecido, agendando até várias tarefas simultâneas, cada uma no seu próprio processo separado, e o programa pode terminar com o simples envio de um sinal de terminação para o seu processo.

3. Re: Programa que sai na hora certa [RESOLVIDO]

Rafael Sampaio
9u31220

(usa Linux Mint)

Enviado em 13/08/2013 - 10:28h

As tarefas são executadas uma de cada vez e existe um tempo de pausa entre elas de aproximadamente 8 segundos. Quero fazer isso no linux e as tarefas podem ser executadas em um ou vários processos, isso é indiferente.

Eu acabei tentando usar um arquivo desta forma:

#include<stdio.h>
int main(){

FILE *arq;
char c;

arq=fopen("controle","w+");

while(1){

//fazer_tarefa(parametro);

fflush(arq);
c=fgetc(arq);

if(c=='e'){
fclose(arq);
return 0;
}
}

}

aí seria só digitar "e" no arquivo controle e salvar que o programa sairia, mas por algum motivo isso não funciona.

Obrigado pelas técnicas que citou, vou pesquisar melhor que alguma delas vai servir, já é uma direção.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts