12.2.05

Contar señales SIGUSR1

Saludos.

El siguiente programa queda a la espera de recibir una señal. Cunado recibe una señal SIGUSR1 incrementa un contador, y cuando recibe una señal SIGTERM muestra el contador y termina.

Una variante muy sencilla es añadirle un manejador para SIGUSR2 de tal manera que, al recibir esta señal, muestre el valor del contador pero continue su ejecución.

Para ejecutar un programa o comando en sgeundo plano, sin que deje la consola ocupada, hay que añadir & al final del nombre del programa o comando.


#include "signal.h"
#include "unistd.h"

void manejadorUSR1(int sig);
void manejadorTERM(int sig);

int cuenta = 0;

int main()
{

if ( signal(SIGUSR1, manejadorUSR1) == SIG_ERR) {
perror("Error instalando manejadorUSR1 - ");
return -1;
}

if ( signal(SIGTERM, manejadorTERM) == SIG_ERR) {
perror("Error instalando manejadorTERM - ");
return -1;
}

while(1)
sleep(5);

return 0;
}

//-------------------------
void manejadorUSR1(int sig) {

if ( signal(SIGUSR1, manejadorUSR1) == SIG_ERR) {
perror("Error instalamdno manejadorUSR1 - ");
exit(0);
}

cuenta++;
}

//---------------------------
void manejadorTERM(int sig) {

printf("Señales USR1 recibidas: %i \n", cuenta);
exit(0);
}

4 comments:

Anonymous said...

Hola, cuando pongas un programa en tu pagina web, perdon blog, lo pones bien pq hay gente q lo lee pq le interesa y no por pasar el rato y claro si tus putas señales de mierda no estan definidas en ningun lado esto parece una basura de programa q no funciona igual me estoy ekivocando pero claro estoy haciendo practicas y me aburro y tengo ganas de acabar el puto ejercicio de señales sigusr1 q me han mandado asi q nada yo es por joder un rato.
Un saludo.

Anonymous said...

Hola, soy yo otra vez era mas q nada por enseñarte un codigo decente de esos q no da rabia leer y q vienen clara y concisamente explicaditos para el uso de señales como la q tu intentas describir ( no con mucho exito por cierto)
la web es:
http://216.239.59.104/search?q=cache:WKuknoUD5O8J:lsi.ugr.es/~jlgarrid/so2/pdf/guion0405_Parte2.pdf+main()+SIGUSR1+ejemplo&hl=es&lr=lang_es&client=firefox-a

Anonymous said...

Este foro es una mierda joder no ves q si intentas ver la web entera me cargo todo y desaparece XDDDDDDDDDDDDDD

Anonymous said...

Who knows where to download XRumer 5.0 Palladium?
Help, please. All recommend this program to effectively advertise on the Internet, this is the best program!