Señales
Llamadas al sistema
Índice
– Señales
Unidad Temática 3
S02 Sistemes operatius II
Llamadas al sistema: Señales
Bibliografía
“UNIX Programación Práctica”. Kay A. Robbins, Steven Robbins. Prentice Hall. ISBN 968-880-959-4. Capítulo 5. Páginas de manual de cualquier distribución Linux. Documentación del estándar POSIX. (http://sop.upv.es/posix)
Equipodocente de “Sistemas Operativos DISCA/DSIC”
Universidad Politécnica de Valencia
Señales
Motivación
– ¿Como puede manejar un s.o. las siguientes situaciones anormales?
Un programa que no acaba nunca i se quiere interrumpir... Un programa que realiza un error no previsto y provoca una excepción, como p.e.:
Señales
Concepto
– Evento que interrumpe la ejecución normal de un proceso – Laacción por defecto es matar el proceso – Pueden manejarse
S02 Sistemes operatius II
S02 Sistemes operatius II
– Un error matemático: división por cero, etc. – Accesos a memoria no permitidos: ‘Segmentation fault’, punteros “mareados”.
– Pueden filtrarse mediante una máscara
– ¿O como puede enterarse de eventos externos i tratarlos adecuadamente?
Se ha cortado la conexión con laterminal: la red ha fallado, la ventana ha sido cerrada. Se ha interrumpido la comunicación con un tubo Han muerto todos los hijos
Máscara de P1 Proceso P1
Ejecución normal
Solució
– Disponer de un mecanismo para poder actuar sobre un programa en ejecución e interrumpirlo Señal
El efecto, en la mayoria de casos, ha de ser eliminar el proceso, aunque en otros puede interesar manejarla.manejador
Señales
Generación de señales Máscara de señales Manejo de señales
manejador(...) Se ejecuta el manejador
Señales
Señales kill
Enviar una señal Generar una alarma (señal de reloj) Iniciar una máscara para que no tenga señales seleccionadas Iniciar una máscara para que contenga todas las señales Poner una señal específica en un conjunto de señales Quitar una señal específica en unconjunto de señales Consultar si una señal pertenece a un cto. de señales Examinar/modificar máscara de señales Capturar/manejar señales Esperar señales
S02 Sistemes operatius II
S02 Sistemes operatius II
alarm sigemptyset sigfillset sigaddset sigdelset sigismember sigprocmask sigaction sigsuspend
. . .
Definición máscara
SIG_IGN SIG_DFL
Se ignora Acción de defecto (exit: matael proceso)
• Terminal • Errores • Software
. . .
kill(...) alarm(..)
sigemptyset(...) sigfillset(..) sigaddset(..) sigdelset(..) sigismemeber(...)
Establecimiento máscara
Establecer manejador
sigaction(...)
Espera de señales
sigprocmask(...)
pause(...) sigsuspend(…)
Señales
Lista de señales
Nº 1 Señal SIGHUP SIGINT SIGQUIT SIGABRT SIGKILL SIGPIPE SIGALRM SIGTERMSIGUSR1 Descripción Colgado/muerte terminal control CTRL-C de teclado (interrupción) CTRL-\ de teclado (int. con core) Terminación anormal como con abort Terminación. No manejable ni ignorable Escritura en tubo sin lector Alarma temporizada programada por alarm Terminación por software Señal 1 definida por el usuario
Señales
Lista de señales / control de trabajos
DFL. exit exit core core exitexit exit exit exit
Nº 20 Señal SIGCHLD SIGCONT SIGSTOP SIGTSTP Descripción Terminación/suspensión del proceso hijo CTRL-C de teclado (interrupción) Alto (no puede capturarse ni ignorarse) Alto de teclado CTRL-z
DFL.
ignore continue stop stop
S02 Sistemes operatius II
2 3 6 9 13 14 15 -
S02 Sistemes operatius II
19 17 18
Control de trabajos en bash
$ cat > text CTRL-Z [1]+Stopped cat > text $ jobs [1]+ Stopped cat > text $ bg [1]+ cat > text & $ fg %1 cat > text $ cat > text CTRL-Z [1]+ Stopped $ jobs [1]+ Stopped $ kill %1 [1]+ Terminated
cat > text cat > text cat > text
Señales
kill: enviar una señal
#include #include
Señales
kill
Valor de retorno – 0 si la señal es enviada y –1 si error. Errores – Número de señal no válido – Permisos
S02 Sistemes...
Regístrate para leer el documento completo.