brk

BRK(2)                      Linux-Programmierhandbuch                     BRK(2)



BEZEICHNUNG
       brk, sbrk - Datensegmentgröße ändern

ÜBERSICHT
       #include <unistd.h>

       int brk(void *Adresse);
       void *sbrk(intptr_t Erhöhung);

   Mit Glibc erforderliche 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() ändern 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 vergrößern hat die Auswirkung, dass für 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 vernünftig ist, hat das System genug
       Speicher und der Prozess überschreitet nicht seine maximale Datengröße
       (siehe setrlimit(2)).

       sbrk vergrößert den Datenbereich des Programms um Erhöhung Byte. Der
       Aufruf von sbrk mit einer Erhöhung von 0 kann zum Auffinden des aktuellen
       Ortes des Programm-Breaks benutzt werden.

RÜCKGABEWERT
       Bei Erfolg gibt brk Null zurück. Im Fehlerfall wird -1 zurückgegeben und
       errno auf ENOMEM gesetzt.

       Bei Erfolg gibt sbrk den vorherigen Program-Break zurück. (Falls der
       Break erhöht wurde, ist dieser Wert ein Zeiger auf den Anfang des neu
       reservierten Speichers). Im Fehlerfall wird (void *) -1 zurückgegeben und
       errno auf ENOMEM gesetzt.

KONFORM ZU
       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 Möglichkeit der Speicherreservierung bereit.

       Verschiedene Systeme benutzen verschieden Typen für das Argument von
       sbrk(). Üblich sind int, ssize_t, ptrdiff_t und intptr_t.

   Unterschiede C-Bibliothek/Kernel
       Der oben beschriebene Rückgabewert für brk() stellt das durch die
       Glibc-Wrapper-Funktion bereitgestellte Verhalten für den
       Linux-Systemaufruf brk() bereit. (In den meisten anderen
       Implementierungen hat brk() den gleichen Rückgabewert; dieser
       Rückgabewert wurde auch in SUSv2 angegeben.)  Der tatsächliche
       Linux-Systemaufruf gibt allerdings bei Erfolg den neuen Program-Break
       zurück. Bei Misserfolg gibt der Systemaufruf den aktuellen Break zurück.
       Die Glibc-Wrapper-Funktion tut dasselbe (d.h. sie prüft, ob der neue
       Break kleiner als Adresse ist), um die Rückgabewerte 0 und -1 wie oben
       beschrieben zurückzugeben.

       Auf Linux ist sbrk() als Bibliotheksfunktion implementiert, die den
       Systemaufruf brk() benutzt und ein wenig interne Buchführung erledigt, so
       dass sie den alten Break-Wert zurückgeben kann.

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

KOLOPHON
       Diese Seite ist Teil der Veröffentlichung 5.13 des Projekts
       Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie
       Fehler gemeldet werden können sowie die aktuelle Version dieser Seite
       finden sich unter https://www.kernel.org/doc/man-pages/.


ÜBERSETZUNG
       Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother
       <krd@gulu.net>, Chris Leick <c.leick@vollbio.de> und Mario Blättermann
       <mario.blaettermann@gmail.com> erstellt.

       Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General
       Public License Version 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ oder
       neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG
       übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
       Sie bitte eine E-Mail an die Mailingliste der Übersetzer ⟨debian-l10n-
       german@lists.debian.org⟩.



Linux                             22. März 2021                           BRK(2)