man aio_read (Fonctions bibliothèques) - Lecture asynchrone.
NOM
aio_read - Lecture asynchrone.
SYNOPSIS
#include <aio.h> int aio_read(struct aiocb *aiocbp);
DESCRIPTION
La fonction aio_read sollicite un « n = read(fd, buf, count) » asynchrone avec fd, buf, count donnés respectivement par aiocbp->aio_fildes, aiocbp->aio_buf, aiocbp->aio_nbytes. L'état de retour n peut être récupéré à l'achèvement en utilisant aio_return(3).
La donnée est lue en commençant au décalage absolu du fichier aiocbp->aio_offset, quelque puisse être la position actuelle du pointeur sur le fichier. Après cette requête, la valeur de la position « courante » du pointeur sur le fichier est indéfinie.
« Asynchrone » signifie que cet appel s'achève aussitôt que la requête ait été mise dans la file d'attente ; la lecture peut être ou ne pas être achevée lorsque l'appel s'achève. On peut tester cet achèvement en utilisant aio_error(3).
Si _POSIX_PRIORITIZED_IO est définie et si le fichier le supporte, l'opération asynchrone est soumise à une priorité égale à celle du processus appelant moins aiocbp->aio_reqprio.
Le membre aiocbp->aio_lio_opcode est ignoré.
Aucune donnée n'est lue dans un fichier régulier au-delà de son décalage maximum.
VALEUR RENVOYÉE
En cas de réussite, 0 est renvoyé. En cas d'erreur, la requête n'est pas mise dans la file d'attente, -1 est renvoyé et errno est positionnée en conséquence. Si une erreur est détectée plus tard, elle sera rapportée via aio_return(3) (état de retour -1) et aio_error(3) (état d'erreur : tout ce qu'on veut, récupéré dans errno, comme EBADF).
ERREURS
- EAGAIN
- Ressources insuffisantes.
- EBADF
- aio_fildes n'est pas un descripteur de fichier valide ouvert en lecture.
- EINVAL
- Une valeur ou plus parmi aio_offset, aio_reqprio, aio_nbytes n'est pas valide.
- EOVERFLOW
- Le fichier est un fichier régulier, nous avons commencé la lecture avant la fin de fichier et voulons au moins un octet, mais la position de départ a dépassé le décalage maximum du fichier.
- ENOSYS
- La fonction n'est pas implémentée sur ce système.
NOTES
C'est une bonne idée que de mettre à zéro le bloc de contrôle avant de l'utiliser. Ce bloc de contrôle ne doit pas être modifié pendant l'opération de lecture. Il ne faut pas accéder à la zone tampon à lire pendant l'opération ou bien des résultats indéfinis peuvent survenir. Les zones mémoires atteintes doivent rester valides.
CONFORMITÉ
POSIX 1003.1-2003
VOIR AUSSI
aio_cancel(3), aio_error(3), aio_fsync(3), aio_return(3), aio_suspend(3), aio_write(3)
TRADUCTION
Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 6 juillet 2005 et révisée le 14 décembre 2005.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=en man 3 aio_read ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.