Laboratorio No 2 Usando Señales

19/3/07

 

Descripción

Los estudiantes experimentarán con las llamadas a sistema sigaction, la que permite manejar interrupciones por software. En particular los alumnos deberán implementar la captura de eventos e implementar los manejadores correspondientes.

 

Objetivo

Este laboratorio tiene como objetivo introducir a los alumnos en forma práctica con las interrupciones por software en Linux, usando el llamado a sistema sigaction

 

Metodología

Durante la primera hora del laboratorio el profesor explicará la forma en que funcionan las interrupciones por software, accesibles a los programadores, en el sistema operativo Linux. Luego el profesor proporcionará algunos ejemplos para explicar el mecanismo usando sigaction.

 

Información general acerca de señales en Linux aquí.

Información más específica aquí

 

Ejemplos capturando señales

 

·         Alarma

·         Error aritmético

·         Violación de segmento

·         Señales de usuario

·         Archivos temporales (sin señales)

·         Archivos temporales (con señales)

 

Posteriormente, en la segunda hora del laboratorio los alumnos deberán implementar un programa en C/C++ que usen el llamado a sistema sigaction para establecer y capturar una señal. Los alumnos podrán usar como base los programas entregados como ejemplos, así como el manual disponible en línea. Esta experiencia será evaluada, y los alumnos deberán enviar sus códigos a chernand at inf punto udec punto cl

 

Los alumnos podrán formar grupos de a 2 o 3 para realizar la experiencia.

 

Especificación del problema a resolver

 

Escriba un programa en C o C++ que permita ingresar una clave en un máximo de tiempo y a la vez el programa no termine al ingresar un Control-C. El programa debe verificar la clave y si es incorrecta debe permitirle al usuario volver a ingresarla. Si el tiempo expira el usuario podrá ingresar la clave nuevamente, con la misma restricción en tiempo. El programa además debe contar el número de veces que el usuario intenta terminar el programa con Control-C. El valor de la clave es irrelevante por que puede estar definida en forma dura en el código.