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>.