plucky (2) sbrk.2.gz

Provided by: manpages-de-dev_4.25.1-1_all bug

BEZEICHNUNG

       brk, sbrk - Datensegmentgröße ändern

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <unistd.h>

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

   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() ä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.

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

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