aio_suspend - Attendre une opération d'E/S asynchrone ou un délai
Bibliothèque de temps réel (
librt,
-lrt)
#include <aio.h>
int aio_suspend(const struct aiocb *const aiocb_list[], int nitems,
const struct timespec *restrict timeout);
La fonction
aio_suspend() suspend le processus léger appelant
jusqu'à ce que l'un des événements suivants se
produise :
- •
- Une ou plusieurs requêtes asynchrones d'E/S de la
liste aiocb_list se sont terminées.
- •
- Un signal est reçu.
- •
-
timeout est non NULL et l'intervalle de temps
spécifié a expiré. Consultez nanospleep(2)
pour plus de détails sur la structure timespec.
Le paramètre
nitems spécifie le nombre
d'éléments dans
aiocb_list. Chaque élément
de la liste pointée par
aiocb_list doit être soit NULL
(auquel cas il est ignoré), soit un pointeur vers un bloc de
contrôle sur lequel a été initiée une E/S en
utilisant
aio_read(3),
aio_write(3), ou
lio_listio(3).
Consultez
aio(7) pour une description de la structure
aiocb.
Si
CLOCK_MONOTONIC est géré, cette horloge est
utilisée pour mesurer l'intervalle de dépassement du
délai (consultez
clock_gettime(2)).
Si cette fonction se termine après l'achèvement de l'une des
requêtes d'E/S indiquées dans
aiocb_list, elle
renvoie 0. Autrement, elle renvoie -1 et définit
errno en conséquence.
- EAGAIN
- L'appel s'est achevé par un dépassement de
délai avant qu'au moins une des opérations indiquées
ne soit terminée.
- EINTR
- L'appel s'est achevé par un signal ;
consultez signal(7). (Il est possible que ce soit un signal
d'achèvement de l'une des opérations que l'on
attendait).
- ENOSYS
-
aio_suspend() n'est pas
implémenté.
La fonction
aio_suspend() est disponible depuis la glibc 2.1.
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface |
Attribut |
Valeur |
aio_suspend() |
Sécurité des threads |
MT-Safe |
POSIX.1-2001, POSIX.1-2008.
POSIX n'indique pas de paramètre à
restreindre, c'est
spécifique à la glibc.
Il est possible d'effectuer une scrutation en utilisant un délai
timeout non nul qui spécifie un intervalle de temps nul.
Si une ou plusieurs opérations d'E/S asynchrones spécifiées
dans
aiocb_list se sont déjà terminées au moment
de l'appel à
aio_suspend(), alors l'appel renvoie
immédiatement.
Pour déterminer quelles opérations d'E/S se sont terminées
après un retour avec succès de
aio_suspend(), utilisez
aio_error(3) pour parcourir les structures
aiocb pointées
par
aiocb_list.
L'implémentation glibc de
aio_suspend() n'est pas sûre dans
un contexte de signal asynchrone
(« async-signal-safe »), en violation des
prérequis de POSIX.1.
aio_cancel(3),
aio_error(3),
aio_fsync(3),
aio_read(3),
aio_return(3),
aio_write(3),
lio_listio(3),
aio(7),
time(7)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Thomas Vincent <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]