Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Telemática
SISTEMAS OPERATIVOS
PRACTICA 6. Señales
Las señales son interrupciones software que pueden ser enviadas aun proceso para
informarle de algún evento asíncrono o situación especial. Revise la teoría vista en
clase.
I.- El programa trata la señal SIGINT, generada al pulsar las teclas Ctrl + C
(interrupción)
Programa 1: signal.c
# include <signal.h>
main(){
void sigint_handler ();
if (signal (SIGINT,sigint_handler)==SIG_ERR)
{
perror (“signal”)
exit (-1);
}
while(1)
{
printf (“En espera de ctrl-c”);
sleep(999);} }
Programa 2: kill.c
#include<stdio.h>
#include<stdlib.h>
# include <signal.h>
main(){
int pid;
if ((pid==fork ( ))==0)
{
while(1)
{
printf ( "el PID del hijo es= %d\n", getpid ());
sleep(10);
}
}
sleep(1);
printf ("PADRE terminacion del proceso %d\n", pid);
kill(pid, SIGTERM);
exit(0);
}
pid en este caso identifica el conjunto de procesos al que se envía la señal.
1.- Escriba un programa que cada que presione ctrl-c muestre el mensaje: “se
presiono ctrl-c”, cuando se hayan presionado 10 veces la tecla ctrl-c, el proceso debe
terminar
2.- codifique un programa que se envía señales a si mismo, para lograrlo utilice la
función raise, cuya declaración es la siguiente:
Revise el siguiente código, en donde el proceso está en espera de una señal y cada
vez que recibe una imprime un número aleatorio
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
main()
{
void manejador_SIGUSR1();
void manejador_SIGTERM();