PDF de programación - Capítulo 6. Programación del tratamiento de señales

Capítulo 6. Programación del tratamiento de señalesgráfica de visualizaciones

Publicado el 17 de Julio del 2017
434 visualizaciones desde el 17 de Julio del 2017
72,2 KB
2 paginas
Creado hace 9a (30/07/2014)
Capítulo 6. Programación del tratamiento de
señales

6.1. Objetivos

Entender la programación con señales de de unix.

6.2. Documentación de las transparencias

Las transparencias relevantes para realizar esta práctica son:
- Páginas 19-35 de las transparencias de C
- Páginas 1-11 de las transparencias de Bibliotecas de C y llamadas al sistema

6.3. Señales en la interfaz de programación de Unix

Compile el programa psignal.c:

#include <unistd.h>
#include <stdlib.h>
#include <signal.h>

#define VUELTAS 10000000000LL

void confirmar(int sig) {

char resp[100];
write(1, "Quiere terminar? (s/n):", 24);
read(0, resp, 100);
if (resp[0]==’s’) exit(0);

}

int main(void) {

long long int i;
signal(SIGINT, SIG_IGN);
write(1, "No hago caso a CONTROL-C\n", 25);
for (i=0; i<VUELTAS; i++);
signal(SIGINT, SIG_DFL);
write(1, "Ya hago caso a CONTROL-C\n", 25);
for (i=0; i<VUELTAS; i++);
signal(SIGINT, confirmar);
write(1, "Ahora lo que digas\n", 19);
for (i=0; i<VUELTAS; i++);
exit(0);

}

y ejecútelo, intentando abortarlo en varios momentos con CONTROL-C. Si los tiempos de los
bucles son demasiado cortos o demasiado largos, ajuste el contador de los bucles1.

1

Capítulo 6. Programación del tratamiento de señales

Ejecútelo en una ventana y mándele la señal de interrupción desde otro terminal (con kill -SIGINT
proceso) para ver que el comportamiento es equivalente 2.
Modifíquelo para que si se le manda la señal de terminar (SIGTERM) escriba el mensaje "No
quiero terminar" y continúe por donde iba.

6.4. Ficheros ofrecidos

En el directorio signal:

• psignal.c.
• El ejecutable de la modificación pedida: psignal2.

6.5. Resultados pedidos

• Explicación del comportamiento del programa psignal.c.
• La modificación pedida: psignal2.c.

Notas

1. Como estamos al límite de la capacidad de los enteros, para alargar el bucle utilizamos un long

long int. Tenga en cuenta que en C, las constantes de ese tipo llevan el sufijo LL, como en
1000000000000000000LL.

2. Puede ver desde otra ventana todos los procesos ligados a cualquier perminal con ps u.

2
  • Links de descarga
http://lwp-l.com/pdf5432

Comentarios de: Capítulo 6. Programación del tratamiento de señales (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad