Beruflich Dokumente
Kultur Dokumente
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();