1. NOM

aio_write - Écriture asynchrone

2. SYNOPSIS

#include <aio.h>

int aio_write(struct aiocb *aiocbp);

Effectuez l'édition des liens avec l'option -lrt.

3. DESCRIPTION

La fonction aio_write() met en file d'attente la requête d'E/S décrite par le tampon pointé par aiocbp. Cette fonction est la version asynchrone de write(2). Les paramètres de l'appel sont write(fd, buf, count) correspondent (dans l'ordre) au membre aio_fildes, aio_buf et aio_nbytes de la structure pointée par aiocbp. Consultez aio(7) pour une description de la structure aiocb.

Si O_APPEND n'est pas défini, la donnée est écrite en commençant au décalage absolu du fichier aiocbp->aio_offset, quelle que soit la position actuelle dans le fichier. Si O_APPEND est défini, les données sont écrites à la fin du fichier dans le même ordre que aio_write(). Après cet appel, la valeur de la position « courante » dans le fichier est indéfinie.

« Asynchrone » signifie que cet appel se termine aussitôt que la requête a été mise dans la file d'attente ; l'écriture peut être ou ne pas être achevée lorsque l'appel termine. On peut tester cet achèvement en utilisant aio_error(3). La valeur de retour d'une opération d'E/S complétée peut être obtenue avec aio_return(3). La notification asynchrone de la fin de l'E/S peut être obtenue en définissant aiocbp->aio_sigevent de façon appropriée. Consultez sigevent(7) pour plus de détails.

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.

4. 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 définie en conséquence. Si une erreur est détectée plus tard, elle sera signalé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).

5. ERREURS

  • EAGAIN
        Ressources insuffisantes.
  • EBADF
        aio_fildes n'est pas un descripteur de fichier valable 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 ou plusieurs valeurs parmi aio_offset, aio_reqprio, aio_nbytes ne sont pas valables.
  • ENOSYS
        aio_write() n'est pas implémenté.

6. VERSIONS

La fonction aio_write() est disponible depuis la glibc 2.1.

7. CONFORMITÉ

POSIX.1-2001, POSIX.1-2008.

8. NOTES

C'est une bonne idée 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 car des résultats indéfinis peuvent survenir. Les zones mémoires atteintes doivent rester valables. Des opérations d'E/S simultanées spécifiant la même structure aiocb produisent des résultats indéfinis.

9. VOIR AUSSI

10. COLOPHON

Cette page fait partie de la publication 3.52 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.

11. TRADUCTION

Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

Alain Portal <http://manpagesfr.free.fr/> (2004-2006). Florentin Duneau et l'équipe francophone de traduction de Debian (2006-2009).

Veuillez signaler toute erreur de traduction en écrivant à <>.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».