brk(2) System Calls Manual brk(2) NOM brk, sbrk - Modifier la taille du segment de donnees BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include int brk(void *addr); void *sbrk(intptr_t increment); Exigences de macros de test de fonctionnalites 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 a 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 definit la fin du segment de donnees du processus (c'est-a-dire, l'interruption de programme est l'endroit juste a la fin du segment de donnees non initialise). Augmenter l'interruption de programme a pour effet d'allouer de la memoire au processus ; la diminuer a pour effet de desallouer de la memoire. brk() positionne la fin du segment de donnees (le premier mot memoire hors de la zone accessible) a l'adresse indiquee par addr. Cette valeur doit etre raisonnable, le systeme doit avoir suffisamment de memoire, et le processus ne doit pas depasser sa taille maximale de segment de donnees (consultez setrlimit(2)). sbrk() incremente l'espace de donnees du programme de increment octets. Appeler sbrk() avec un increment nul permet d'obtenir l'emplacement de la limite actuelle. VALEUR RENVOYEE S'il reussit, brk() renvoie zero. En cas d'erreur, il renvoie -1 et remplit errno avec ENOMEM. S'il reussit, sbrk() renvoie l'interruption de programme precedente. (Si la limite a ete augmentee, cette valeur est un pointeur sur le debut de la nouvelle zone de donnees). En cas d'echec, (void *) -1 est renvoye et errno contient le code d'erreur ENOMEM. STANDARDS Aucun. HISTORIQUE BSD 4.3 ; SUSv1, considere comme historique dans SUSv2, supprime dans POSIX.1-2001. NOTES Evitez d'utiliser brk() et sbrk() : la fonction d'allocation memoire malloc(3) est une methode portable et confortable d'allouer de la memoire. Differents systemes utilisent differents types comme parametres a sbrk(). Les plus courants sont int, ssize_t, ptrdiff_t, intptr_t. Differences entre bibliotheque C et noyau La valeur de retour decrite ci-dessus pour brk() est le comportement de la fonction de glibc autour de l'appel systeme brk() de Linux. (Sur la plupart des autres implementations, la valeur de retour de brk() est la meme ; cette valeur de retour est egalement indiquee par SUSv2.) Cependant, l'appel systeme Linux lui-meme renvoie la nouvelle limite du segment de donnees. En cas d'echec, l'appel systeme renvoie la limite actuelle. La fonction enveloppe de la glibc fait le necessaire (c'est-a-dire verifie que la nouvelle limite est inferieure a addr) pour renvoyer les valeurs de retour 0 et -1 decrites plus haut. Sous Linux, sbrk() est implemente comme une fonction de bibliotheque utilisant l'appel systeme 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 francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Philippe MENGUAL Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 brk(2)