dwww Home | Manual pages | Find package

pread(2)                      System Calls Manual                     pread(2)

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 version 2.12 de la glibc : */ _POSIX_C_SOURCE >= 200809L

DESCRIPTION
       pread()  lit au maximum count octets depuis le descripteur fd, à la po-
       sition 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 fi-
       chier) dans le descripteur fd. La position de la tête d'écriture du fi-
       chier n'est pas modifiée.

       Dans les deux cas, le fichier décrit par fd doit permettre le position-
       nement.

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 in-
       diqué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 Li-
       nux 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 com-
       pris l'émulation utilisant lseek(2) sur les anciens noyaux sans ces ap-
       pels système, fut ajouté dans la glibc 2.1.

STANDARDS
       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 Li-
       nux 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).

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 Chris-
       tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <ste-
       phan.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.cou-
       lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>,  Thomas  Huriaux
       <thomas.huriaux@gmail.com>,  Nicolas François <nicolas.francois@centra-
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon  Paillard  <si-
       mon.paillard@resel.enst-bretagne.fr>,    Denis   Barbier   <barbier@de-
       bian.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⟩.

Pages du manuel de Linux 6.03   4 décembre 2022                       pread(2)

Generated by dwww version 1.15 on Sat Jun 29 01:33:46 CEST 2024.