Provided by: manpages-fr-dev_4.23.1-1_all bug

NOM

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

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <unistd.h>

       ssize_t pread(int fd, void buf[.count], size_t count,
                     off_t offset);
       ssize_t pwrite(int fd, const void buf[.count], 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 définie pour préciser 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).

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001.

       Ajoutés  dans  Linux 2.1.60.  Les  points  d'entrée  dans  la table des appels i386 furent
       instaurés dans Linux 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.

   Différences entre bibliothèque C et noyau
       Sous Linux, les appels système sous-jacents ont été renommés dans Linux 2.6 : pread()  est
       devenu   pread64()  et  pwrite()  est  devenu  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).

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.

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)

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⟩.