aio_write
Section: C Library Functions (3)
Updated: 5 février 2023
Index
Return to Main Contents
NOM
aio_write - Écriture asynchrone
BIBLIOTHÈQUE
Bibliothèque de temps réel (librt, -lrt)
SYNOPSIS
#include <aio.h>
int aio_write(struct aiocb *aiocbp);
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 à la
position absolue 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 terminé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 gère,
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 normal 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
pour indiquer l'erreur. Si une erreur est détectée plus tard, elle sera
signalée à l'aide de 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 valable ouvert en
écriture.
- EFBIG
-
Le fichier est un fichier normal, 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é.
VERSIONS
La fonction aio_write() est disponible depuis la glibc 2.1.
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface | Attribut | Valeur
|
aio_write()
| Sécurité des threads | MT-Safe
|
STANDARDS
POSIX.1-2001, POSIX.1-2008.
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.
VOIR AUSSI
aio_cancel(3), aio_error(3), aio_fsync(3), aio_read(3),
aio_return(3), aio_suspend(3), lio_listio(3), aio(7)
TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>
et
Thomas Vincent <tvincent@debian.org>
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 à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- VERSIONS
-
- ATTRIBUTS
-
- STANDARDS
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 06:21:47 GMT, May 18, 2024