brk

BRK(2)                     Manuel du programmeur Linux                    BRK(2)



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() :
           Since glibc 2.19:
               _DEFAULT_SOURCE
                   || ((_XOPEN_SOURCE >= 500) &&
                       ! (_POSIX_C_SOURCE >= 200112L))
           From glibc 2.12 to 2.19:
               _BSD_SOURCE || _SVID_SOURCE
                   || ((_XOPEN_SOURCE >= 500) &&
                       ! (_POSIX_C_SOURCE >= 200112L))
           Before 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 ⟨⟩.




Linux                             22 mars 2021                            BRK(2)