Colas (Programación) Poxis
Manejo de señales:
Tipos de señales Bloquear / desbloquear Servicio síncrono / asíncrono Enviar señales
Tipos de señales:
Interrupciones hardware Excepciones Generada por unproceso
En signal.h se definen ctes. para las diferentes señales
SIGKILL Elimina el proceso SIGALRM Alarm clock SIGSEGV Violación de memoria SIGUSR1 User defined signal 1 SIGUSR2 User defined signal2 SIGRTMIN first (highest-priority) realtime signal SIGRTMAX last (lowest-priority) realtime signal …
Señales POSIX
Bloquear/desbloquear señales:
int pthread_sigmask (int how, const sigset_t*set, sigset_t *oset); how puede ser: SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK
Previamente hay que llenar el conjunto set:
Inicializar un conjunto excluyendo todas las señales:
int sigemptyset( sigset_t*set);
Inicializar un conjunto incluyendo todas las señales:
int sigfillset( sigset_t *set);
Añadir la señal indicada a un conjunto:
int sigaddset( sigset_t *set, int signo);
Excluir laseñal indicada de un conjunto:
int sigdelset( sigset_t *set, int signo);
1
Señales POSIX
Servicio asíncrono de señales:
Bloquear señales a manejar Establecer rutina de manejo:
int sigaction(intsig, const struct sigaction *act, struct sigaction *oact);
Desbloquear señales a manejar
struct sigaction {
int sa_flags; void (*sa_handler)(int); sigset_t sa_mask; /* Función asíncrona oSIG_DFL (función por defecto) o SIG_IGN (ignorar) */ /* Señales a bloquear durante ejecución */
}; Para señales TR, usar sa_flags=SIGINFO y cambiar sa_handler por sig_action:
void (*sa_sigaction)(int,siginfo_t *, void *);
Señales POSIX
Servicio síncrono de señales:
Bloquear señales a manejar Esperar con:
int sigwait( sigset_t *set,int* sig); /* Señales no T.R. */
O bien para señales enT.R.:
int sigwaitinfo(const sigset_t *set, siginfo_t *info); int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout);
Envío de señales:
A un proceso:
int...
Regístrate para leer el documento completo.