dwww Home | Manual pages | Find package

brk(2)                        System Calls Manual                       brk(2)

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

BIBLIOTHÈQUE
       Bibliothèque C standard (libc, -lc)

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 à la glibc 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.

STANDARDS
       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.) Cepen-
       dant, l'appel système Linux lui-même renvoie la nouvelle limite du seg-
       ment de données. En cas d'échec, l'appel système renvoie la limite  ac-
       tuelle.   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)

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                         brk(2)

Generated by dwww version 1.15 on Sat Jun 29 01:47:21 CEST 2024.