Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

       brk, sbrk - Modifier la taille du segment de données

SYNOPSIS

       #include <unistd.h>

       int brk(void *addr);
       void *sbrk(intptr_t increment);

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

       brk(), sbrk() :
           Depuis la glibc 2.19 :
               _DEFAULT_SOURCE
                   || ((_XOPEN_SOURCE >= 500) &&
                       ! (_POSIX_C_SOURCE >= 200112L))
           De la glibc 2.12 à 2.19 :
               _BSD_SOURCE || _SVID_SOURCE
                   || ((_XOPEN_SOURCE >= 500) &&
                       ! (_POSIX_C_SOURCE >= 200112L))
           Avant la glibc 2.12 :
               _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500

DESCRIPTION

       brk() et sbrk() modifient l'emplacement de l'interruption de programme, qui définit la fin
       du  segment  de  données  du  processus  (c'est-à-dire,  l'interruption  de  programme est
       l'endroit juste à la fin du segment de données non initialisé).  Augmenter  l'interruption
       de  programme a pour effet d'allouer de la mémoire au processus ; la diminuer à pour effet
       de désallouer de la mémoire.

       brk() positionne la fin du segment de données (le premier mot  mémoire  hors  de  la  zone
       accessible)  à l'adresse indiquée par addr. Cette valeur doit être raisonnable, le système
       doit avoir suffisamment de mémoire, et  le  processus  ne  doit  pas  dépasser  sa  taille
       maximale de segment de données (consultez setrlimit(2)).

       sbrk()  incrémente  l'espace  de  données du programme de increment octets. Appeler sbrk()
       avec un increment nul permet d'obtenir l'emplacement de la limite actuelle.

VALEUR RENVOYÉE

       S'il réussit, brk() renvoie zéro. En cas d'erreur, il renvoie -1  et  remplit  errno  avec
       ENOMEM.

       S'il  réussit,  sbrk() renvoie l'interruption de programme précédente. (Si la limite a été
       augmentée, cette valeur est un pointeur sur le début de la nouvelle zone de  données).  En
       cas d'échec, (void *) -1 est renvoyé et errno contient le code d'erreur ENOMEM.

CONFORMITÉ

       BSD 4.3 ; SUSv1, considéré comme historique dans SUSv2, supprimé dans POSIX.1-2001.

NOTES

       Évitez  d'utiliser  brk()  et  sbrk() : la fonction d'allocation mémoire malloc(3) est une
       méthode portable et confortable d'allouer de la mémoire.

       Différents systèmes utilisent  différents  types  comme  paramètres  à  sbrk().  Les  plus
       courants sont int, ssize_t, ptrdiff_t, intptr_t.

   différences entre bibliothèque C et noyau
       La  valeur  de  retour  décrite ci‐dessus pour brk() est le comportement de la fonction de
       glibc  autour  de  l'appel  système  brk()  de  Linux.  (Sur   la   plupart   des   autres
       implémentations,  la  valeur  de  retour de brk() est la même ; cette valeur de retour est
       également indiquée par SUSv2.)  Cependant,  l'appel  système  Linux  lui‐même  renvoie  la
       nouvelle  limite  du segment de données. En cas d'échec, l'appel système renvoie la limite
       actuelle. La fonction enveloppe de la glibc fait le nécessaire (c'est-à-dire  vérifie  que
       la  nouvelle  limite  est  inférieure  à addr) pour renvoyer les valeurs de retour 0 et -1
       décrites plus haut.

       Sous Linux, sbrk() est implémenté comme une fonction  de  bibliothèque  utilisant  l'appel
       système  brk(),  et fait certains calculs internes pour pouvoir renvoyer l'ancienne valeur
       de la limite.

VOIR AUSSI

       execve(2), getrlimit(2), end(3), malloc(3)

COLOPHON

       Cette page fait partie de la publication 5.13 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⟩.