| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 
 | .\" Copyright (c) 2002 Michael kerrisk <mtk16@ext.canterbury.ac.nz>
.\"
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\"
.\" Traducido por Miguel Pérez Ibars <mpi79470@alu.um.es> el 5-julio-2004
.\"
.TH SIGWAITINFO 2 "7 junio 2002" "Linux 2.4.18" "Manual del Programador de Linux"
.SH NOMBRE
sigwaitinfo, sigtimedwait \- espera síncrona de señales encoladas
.SH SINOPSIS
.B #include <signal.h>
.sp
.BI "int sigwaitinfo(const sigset_t *" set ", siginfo_t *" info ");"
.sp
.BI "int sigtimedwait(const sigset_t *" set ", siginfo_t *" info ", "
.BI "const struct timespec " timeout ");"
.SH DESCRIPCIÓN
.BR sigwaitinfo ()
suspende la ejecución del proceso invocador hasta que se comunica una de las señales en
.I set.
(Si una de las señales en
.I set
ya está siendo esperada por el proceso invocador,
.BR sigwaitinfo ()
regresará inmediatamente con información sobre la señal.)
.BR sigwaitinfo ()
elimina la señal comunicada de la lista de señales pendientes del proceso
invocador y devuelve el número de señal como resultado.
Si el argumento
.I info
es distinto de
.BR NULL ,
devuelve una estructura del tipo
.I siginfo_t
(véase
.BR sigaction (2))
que contiene información sobre la señal.
.PP
Las señales devueltas via
.BR sigwaitinfo ()
son comunicadas en el orden habitual; véase
.BR signal (7)
para más detalles.
.PP
.BR sigtimedwait ()
opera de la misma forma que
.BR sigwaitinfo ()
salvo que tiene un argumento adicional,
.IR timeout ,
que habilita un límite superior de tiempo en el que el proceso
puede estar suspendido.
Este argumento es del siguiente tipo:
.sp
.in +2n
.nf
struct timespec {
    long    tv_sec;         /* seconds */
    long    tv_nsec;        /* nanoseconds */
}
.fi
.in -2n
.sp
Si ambos campos de esta estructura tienen valor 0, se realiza un sondeo:
.BR sigtimedwait ()
regresa inmediatamente, ya sea con información sobre una señal pendiente
para el invocador, o con un error si no había señales pendientes en
.I set.
.SH "VALOR DEVUELTO"
En caso de éxito, tanto
.BR sigwaitinfo ()
como
.BR sigtimedwait ()
devuelven un número de señal (un valor mayor que cero).
En caso de fallo ambas llamadas devuelven \-1, y modifican
.I errno
para reflejar el error.
.SH ERRORES
.TP
.B EAGAIN
No se comunicó ninguna señal en
.I set
dentro del período
.I timeout
especificado a
.BR sigtimedwait ().
.TP
.B EINVAL
.I timeout
inválido.
.TP
.B EINTR
La espera fue interrumpida por un manejador de señales.
(Este manejador se ocupa de una señal distinta de las que hay en
.IR set .)
.SH OBSERVACIONES
Si se usa normalmente, el invocador bloquea las señales en
.I set
a través de una llamada previa a
.BR sigprocmask ()
(para que la acción por defecto para estas señales no tenga efecto
si son comunicadas entre sucesivas llamadas a
.BR sigwaitinfo () o
.BR sigtimedwait())
y no establece manejadores para estas señales.
.PP
POSIX deja como indefinido el significado de un valor
.B NULL
para el argumento
.I timeout
de
.BR sigtimedwait ()
, permitiendo la posibilidad de que ésta tenga el mismo significado
que una llamada a
.BR sigwaitinfo (),
y, de hecho, así es lo que está establecido en Linux.
.SH "CONFORME A"
POSIX 1003.1-2001
.SH "VÉASE TAMBIÉN"
.BR kill (2),
.BR sigaction (2),
.BR signal (2),
.BR sigpending (2),
.BR sigprocmask (2),
.BR sigqueue (2),
.BR signal (7),
.BR sigsetops (3)
 |