Provided by: manpages-de-dev_0.10-1_all bug

BEZEICHNUNG

       brk, sbrk - Datensegmentgröße ändern

ÜBERSICHT

       #include <unistd.h>

       int brk(void *adresse);

       void *sbrk(intptr_t erhoehung);

   Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

       brk(), sbrk():
           Seit Glibc 2.12:
               _BSD_SOURCE || _SVID_SOURCE ||
                   (_XOPEN_SOURCE >= 500 ||
                       _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
                   !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
           Bis Glibc 2.12: _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500 ||
               _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

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 erhoehung Byte. Der Aufruf von sbrk mit
       einer erhoehung von 0 kann zum Auffinden des aktuellen Ortes  des  Program-Breaks  benutzt
       werden.

RÜCKGABEWERT

       Bei  Erfolg gibt brk Null zurück. Im Fehlerfall wird -1 zurückgegeben und errno auf ENOMEM
       gesetzt. (Lesen sie aber die Linux-Anmerkungen unten.)

       Bei Erfolg gibt brk 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.

   Linux-Anmerkungen
       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  3.32  des  Projekts  Linux-man-pages.  Eine
       Beschreibung  des  Projekts  und  Informationen, wie Fehler gemeldet werden können, finden
       sich unter http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother <krd@gulu.net>  und
       Chris Leick <c.leick@vollbio.de> erstellt.

       Diese  Übersetzung  ist  Freie  Dokumentation;  lesen  Sie  die GNU General Public License
       Version  3  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 <debian-l10n-german@lists.debian.org>.