Linux |
CentOS 5.3 |
|
aio_write(3) |
aio_write − Ãcriture asynchrone. |
#include <aio.h> int aio_write(struct aiocb *aiocbp); |
La fonction aio_write() sollicite un « n = write(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). Si O_APPEND n’est pas positionné, la donnée est écrite en commençant au décalage absolu du fichier aiocbp->aio_offset, quelque puisse être la position actuelle du pointeur sur le fichier. Si O_APPEND est positionné, la donnée est écrite à la fin du 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 ; l’écriture 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 écrite dans un fichier régulier au-delà de son décalage maximum. |
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). |
EAGAIN |
Ressources insuffisantes. |
||
EBADF |
aio_fildes n’est pas un descripteur de fichier valide ouvert en écriture. |
||
EFBIG |
Le fichier est un fichier régulier, nous voulons écrire au moins un octet, mais la position de départ est égale ou au-delà du décalage maximum du fichier. |
||
EINVAL |
Une valeur ou plus parmi aio_offset, aio_reqprio, aio_nbytes n’est pas valide. |
||
ENOSYS |
La fonction n’est pas implémentée sur ce système. |
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 d’écriture. Il ne faut pas accéder à la zone tampon à écrire pendant l’opération ou bien des résultats indéfinis peuvent survenir. Les zones mémoires atteintes doivent rester valides. |
POSIX.1-2001. |
aio_cancel(3), aio_error(3), aio_fsync(3), aio_read(3), aio_return(3), aio_suspend(3) |
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 août 2006. 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=C man 3 aio_write ». N’hésitez pas à signaler à l’auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel. |
aio_write(3) |