Provided by: manpages-fr-dev_3.17.1-1_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 (voir
   feature_test_macros(7)) :

       brk(), sbrk() : _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  spécifié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 (voir setrlimit(2)).

       sbrk() incrémente l’espace de données du programme de increment octets.
       sbrk()  n’est  pas  un  appel  système,  juste  une  fonction   de   la
       bibliothèque  C.  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 (voir la section Notes sur Linux ci‐dessous).

       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.

   Notes sur Linux
       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  spécifié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 3.17 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       être       trouvées      à      l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».