Todos aqueles que já lançaram programas de simulação ou de cálculo numérico muito longos devem ter pensado numa forma de saber como está progredindo a aplicação durante a sua execução. Isto é perfeitamente possível através do envio do comando shell kill aos processos associados ao sinal. Os processos podem então, após a recepção deste sinal, apresentar os dados desejados. O exemplo a seguir mostra um programa que ajuda a resolver este problema:
/* arquivo verificacao.c */
#include <errno.h>
#include <stdio.h>
#include <signal.h>
#include <time.h>
#include <unistd.h>
/* as variaveis a serem editadas devem ser globais */
long somme = 0 ;
void it_verificacao()
{
long t_date ;
signal(SIGUSR1, it_verificacao) ;/* reativo SIGUSR1 */
time(&t_date) ;
printf("\n Data do teste : %s ", ctime(&t_date)) ;
printf("valor da soma : %d \n", (int) somme) ;
}
int main()
{
signal(SIGUSR1,it_verificacao) ;
printf ("Enviar o sinal USR1 para o processo %d \n",getpid()) ;
while(1) {
sleep(1);
somme++ ;
}
exit(0);
}
Resultado da execução:
Se o programa é lançado em background, se o usuário digitar o
comando shell kill -USR1 pid, ele irá obter as variáveis de
controle desejadas. A primitiva ctime() usada no programa
retorna um ponteiro para uma cadeia de caracteres contendo a data sob
a forma:
"Wed Jun 30 21:49:08 1993\n"