Provided by: manpages-fr-dev_4.13-4_all bug

NOM

       pread, pwrite - Lire ou écrire à une position donnée d'un descripteur de fichier

SYNOPSIS

       #include <unistd.h>

       ssize_t pread(int fd, void *buf, size_t count, off_t offset);

       ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consulter
   feature_test_macros(7)) :

       pread(), pwrite() :
           _XOPEN_SOURCE >= 500
           || /* Depuis la glibc 2.12 : */ _POSIX_C_SOURCE >= 200809L

DESCRIPTION

       pread() lit au maximum count octets  depuis  le  descripteur  fd,  à  la  position  offset
       (mesurée  depuis  le  début  du fichier), et les place dans la zone commençant à l'adresse
       buf. La position de la tête de lecture  du  fichier  n'est  pas  modifiée  par  cet  appel
       système.

       pwrite()  lit au maximum count octets dans la zone mémoire pointée par buf, et les écrit à
       la position offset (mesurée depuis le  début  du  fichier)  dans  le  descripteur  fd.  La
       position de la tête d'écriture du fichier n'est pas modifiée.

       Dans les deux cas, le fichier décrit par fd doit permettre le positionnement.

VALEUR RENVOYÉE

       En  cas  de succès, pread() renvoie le nombre d'octets lus (un code de zéro indique la fin
       du fichier) et pwrite() renvoie le nombre d'octets écrits.

       Remarquez que le fait de transférer moins d'octets que  deux  demandés  (voir  read(2)  et
       write(2)) ne constitue pas une erreur empêchant le succès de l'appel.

       En cas d'erreur, la valeur de retour est -1 et errno est positionné pour contenir la cause
       de l'erreur.

ERREURS

       pread() peut échouer et fournir dans errno n'importe quelle erreur indiquée par read(2) ou
       lseek(2). pwrite() peut échouer et fournir dans errno n'importe quelle erreur indiquée par
       write(2) ou lseek(2).

VERSIONS

       Les appels système pread() et pwrite() ont été ajoutés dans le  noyau  Linux  2.1.60.  Les
       points  d'entrée dans la table des appels i386 furent instaurés dans la version 2.1.69. Le
       support par la bibliothèque C, y compris l'émulation utilisant lseek(2)  sur  les  anciens
       noyaux sans ces appels système, fut ajouté dans la glibc 2.1.

CONFORMITÉ

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

NOTES

       Les  appels système pread() et pwrite() sont particulièrement utiles dans les applications
       multithreadées . Ils permettent à plusieurs threads d'effectuer des entrées et sorties sur
       un  même descripteur de fichier sans être affecté des déplacements au sein du fichier dans
       les autres threads.

   différences entre bibliothèque C et noyau
       Sous Linux, les appels système sous-jacents ont été renommés dans le  noyau 2.6 :  pread()
       devint  pread64(), et pwrite()  devint pwrite64(). Les numéros d'appel système demeurèrent
       inchangés. Les fonctions pread() et pwrite() de la glibc qui  les  encapsulent  gèrent  ce
       changement de manière transparente.

       Sur  certaines  architectures  32 bits,  la  signature  d'appel  de ces appels système est
       différente, pour les raisons expliquées dans syscall(2).

BOGUES

       POSIX impose qu'ouvrir un  fichier  avec  l'attribut  O_APPEND  ne  devrait  pas  affecter
       l'emplacement  où  pwrite()  écrit  les  données.  Cependant avec Linux, si un fichier est
       ouvert avec O_APPEND, pwrite() écrit les données à la fin du fichier, quelle que  soit  la
       valeur d'offset.

VOIR AUSSI

       lseek(2), read(2), readv(2), write(2)

COLOPHON

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

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  Jean-Philippe  MENGUAL
       <jpmengual@debian.org>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   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 à debian-l10n-french@lists.debian.org ⟨⟩.