Scroll to navigation

brk(2) System Calls Manual brk(2)

NAAM

brk, sbrk - verander data segment grootte

BIBLIOTHEEK

Standard C bibliotheek (libc, -lc)

SAMENVATTING

#include <unistd.h>
int brk(void *addr);
void *sbrk(intptr_t increment);

Feature Test Macro´s eisen in glibc (zie feature_test_macros(7)):

brk(), sbrk():


Vanaf glibc 2.19:
_DEFAULT_SOURCE
|| ((_XOPEN_SOURCE >= 500) &&
! (_POSIX_C_SOURCE >= 200112L))
Van glibc 2.12 tot 2.19:
_BSD_SOURCE || _SVID_SOURCE
|| ((_XOPEN_SOURCE >= 500) &&
! (_POSIX_C_SOURCE >= 200112L))
Voor glibc 2.12:
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500

BESCHRIJVING

brk() eb sbrk() veranderen de locatie van het programma einde, die het einde het het data segment van het proces markeert (m.a.w., het programma einde is de eerste locatie ná het einde van het niet-geïnitialiseerde data segment). Verhogen van het programma einde heeft een effect op het toekennen van geheugen aan het proces; verlagen van het einde geeft geheugen vrij.

brk() zet het einde van het data segment op de waarde gegeven door addr, wanneer die waarde redelijk is, het systeem genoeg geheugen heeft, en het proces overschrijdt niet de maximale data grootte (zie setrlimit(2)).

sbrk() vergroot de data ruimte van het programma met increment bytes. Aanroepen van sbrk() met een increment waarde 0 kan gebruikt worden om de huidige locatie van het programma einde te vinden.

EIND WAARDE

Bij succes geeft brk() nul terug. Bij falen wordt -1 teruggegeven en wordt errno naar behoren gezet.

Bij succes retourneert sbrk() het vorige programma einden. (Als het einde werd vergroot dan is deze waarde een wijzer naar het begin van het nieuw toegewezen geheugen). Bij een fout wordt (void *) -1 teruggegeven, en errno wordt op ENOMEM gezet.

VOLDOET AAN

4.3BSD; SUSv1, markeerden erfenis in SUSv2, verwijderd in POSIX.1-2001.

OPMERKINGEN

Vermijd het gebruik van brk() en sbrk(): het malloc(3) geheugen toewijs pakket is overdraagbaar en een comfortabele manier om geheugen toe te wijzen.

Verschillende systemen gebruiken verschillende typen voor het argument van sbrk(). Gebruikt worden int, ssize_t, ptrdiff_t, intptr_t.

C library/kernel verschillen

De uitvoer waarde zoals boven beschreven voor brk() is het gedrag voorzien door de glibc omwikkel functie voor de Linux brk() systeem aanroep. (In de meeste andere implementaties, is de uitvoer waarde van brk() hetzelfde; deze uitvoer waarde werd ook gespecificeerd in SUSv2.) Echter, de huidige Linux systeem aanroep retourneert een nieuw programma einde bij succes. Bij een fout, retourneert de systeem aanroep het huidige einde. De glibc omwikkel functie doet werk (m.a.w., controleert of het nieuwe einde kleiner is dan addr) om te voorzien in de 0 en -1 uitvoer waarden zoals hierboven beschreven.

Op Linux is sbrk() geïmplementeerd als een bibliotheek functie die de brk systeem aanroep gebruikt, en die interne administratie uitvoert zodat het oude einde teruggegeven kan worden.

ZIE OOK

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

VERTALING

De Nederlandse vertaling van deze handleiding is geschreven door Mario Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>

Deze vertaling is vrije documentatie; lees de GNU General Public License Version 3 of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.

Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar debian-l10n-dutch@lists.debian.org.

4 december 2022 Linux man-pagina's 6.03