brk(2) System Calls Manual brk(2) NAAM brk, sbrk - verander data segment grootte BIBLIOTHEEK Standard C bibliotheek (libc, -lc) SAMENVATTING #include 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 na het einde van het niet-geinitialiseerde 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 Geen. GESCHIEDENIS 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() geimplementeerd 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 Blattermann en Luc Castermans 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 . Linux man-pages 6.06 31 oktober 2023 brk(2)