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);
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
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() 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
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.
2 mei 2024 | Linux man-pages 6.8 |