brk(2) System Calls Manual brk(2) BEZEICHNUNG brk, sbrk - Datensegmentgrosse andern BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include int brk(void *Adresse); void *sbrk(intptr_t Erhohung); Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)): brk(), sbrk(): Seit Glibc 2.19: _DEFAULT_SOURCE || ((_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200112L)) Von Glibc 2.12 bis 2.19: _BSD_SOURCE || _SVID_SOURCE || ((_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200112L)) Vor Glibc 2.12: _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500 BESCHREIBUNG brk() und sbrk() andern den Ort des program break, der das Ende des Datensegments des Prozesses definiert (d.h. der Program-Break ist der erste Ort nach dem Ende des nicht initialisierten Datensegments). Den Program-Break zu vergrossern hat die Auswirkung, dass fur den Prozess Speicher reserviert wird; den Break zu verkleinern gibt reservierten Speicher frei. brk setzt das Ende des Datensegments auf den Wert, der durch Adresse angegeben ist. Wenn dieser Wert vernunftig ist, hat das System genug Speicher und der Prozess uberschreitet nicht seine maximale Datengrosse (siehe setrlimit(2)). sbrk vergrossert den Datenbereich des Programms um Erhohung Byte. Der Aufruf von sbrk mit einer Erhohung von 0 kann zum Auffinden des aktuellen Ortes des Programm-Breaks benutzt werden. RUCKGABEWERT Bei Erfolg gibt brk Null zuruck. Im Fehlerfall wird -1 zuruckgegeben und errno auf ENOMEM gesetzt. Bei Erfolg gibt sbrk den vorherigen Program-Break zuruck. (Falls der Break erhoht wurde, ist dieser Wert ein Zeiger auf den Anfang des neu reservierten Speichers). Im Fehlerfall wird (void *) -1 zuruckgegeben und errno auf ENOMEM gesetzt. STANDARDS Keine. GESCHICHTE 4.3BSD; SUSv1, in SUSv2 als ALTLAST gekennzeichnet, in POSIX.1-2001 entfernt ANMERKUNGEN Vermeiden Sie die Benutzung von brk() und sbrk(): Das Speicherreservierungspaket malloc(3) ist portabel und stellt eine komfortable Moglichkeit der Speicherreservierung bereit. Verschiedene Systeme benutzen verschieden Typen fur das Argument von sbrk(). Ublich sind int, ssize_t, ptrdiff_t und intptr_t. Unterschiede C-Bibliothek/Kernel Der oben beschriebene Ruckgabewert fur brk() stellt das durch die Glibc-Wrapper-Funktion bereitgestellte Verhalten fur den Linux-Systemaufruf brk() bereit. (In den meisten anderen Implementierungen hat brk() den gleichen Ruckgabewert; dieser Ruckgabewert wurde auch in SUSv2 angegeben.) Der tatsachliche Linux-Systemaufruf gibt allerdings bei Erfolg den neuen Program-Break zuruck. Bei Misserfolg gibt der Systemaufruf den aktuellen Break zuruck. Die Glibc-Wrapper-Funktion tut dasselbe (d.h. sie pruft, ob der neue Break kleiner als Adresse ist), um die Ruckgabewerte 0 und -1 wie oben beschrieben zuruckzugeben. Auf Linux ist sbrk() als Bibliotheksfunktion implementiert, die den Systemaufruf brk() benutzt und ein wenig interne Buchfuhrung erledigt, so dass sie den alten Break-Wert zuruckgeben kann. SIEHE AUCH execve(2), getrlimit(2), end(3), malloc(3) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Patrick Rother , Chris Leick und Mario Blattermann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 brk(2)