Provided by: manpages-ro-dev_4.21.0-2_all bug

NUME

       brk, sbrk - modifică dimensiunea segmentului de date

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

       #include <unistd.h>

       int brk(void *addr);
       void *sbrk(intptr_t increment);

   Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

       brk(), sbrk():
           Începând cu glibc 2.19:
               _DEFAULT_SOURCE
                   || ((_XOPEN_SOURCE >= 500) &&
                       ! (_POSIX_C_SOURCE >= 200112L))
           De la glibc 2.12 la glibc 2.19:
               _BSD_SOURCE || _SVID_SOURCE
                   || ((_XOPEN_SOURCE >= 500) &&
                       ! (_POSIX_C_SOURCE >= 200112L))
           Înainte de glibc 2.12:
               _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500

DESCRIERE

       brk()  și  sbrk()  modifică  locația  lui  program break, care definește sfârșitul segmentului de date al
       procesului (de exemplu,  pauza  de  program  este  prima  locație  după  sfârșitul  segmentului  de  date
       neinițializat).  Creșterea  întreruperii  de  program  are  ca  efect  alocarea de memorie pentru proces;
       scăderea întreruperii are ca efect eliberarea de memorie.

       brk() stabilește sfârșitul segmentului de date la valoarea  specificată  de  addr,  atunci  când  această
       valoare  este rezonabilă, sistemul are suficientă memorie, iar procesul nu depășește dimensiunea maximă a
       datelor (a se vedea setrlimit(2)).

       sbrk() mărește spațiul de date al programului cu increment octeți.  Apelarea sbrk() cu un increment de  0
       poate fi utilizată pentru a găsi locația curentă a întreruperii programului.

VALOAREA RETURNATĂ

       În  caz de succes, brk() returnează zero. În caz de eroare, se returnează -1, iar errno este stabilită la
       ENOMEM.

       În caz de succes, sbrk() returnează întreruperea anterioară a programului  (dacă  pauza  a  fost  mărită,
       atunci  această  valoare  este  un  indicator  la  începutul  memoriei nou alocate). În caz de eroare, se
       returnează (void *) -1, iar errno este stabilită la ENOMEM.

STANDARDE

       4.3BSD; SUSv1, marcată ca „LEGACY” în SUSv2, eliminată în POSIX.1-2001.

NOTE

       Evitați utilizarea brk() și sbrk(): pachetul de alocare a  memoriei  malloc(3)  este  modul  portabil  și
       confortabil de alocare a memoriei.

       Diferite  sisteme  utilizează  diferite  tipuri  pentru argumentul lui sbrk().  Cele mai comune sunt int,
       ssize_t, ptrdiff_t, intr_t.

   Diferențe între biblioteca C și nucleu
       Valoarea de retur descrisă mai sus pentru brk() este comportamentul oferit de funcția de învăluire  glibc
       pentru apelul de sistem Linux brk(); (în majoritatea celorlalte implementări, valoarea de returnare de la
       brk() este aceeași; această valoare de returnare a fost, de asemenea, specificată  în  SUSv2).  Cu  toate
       acestea,  apelul  de  sistem Linux efectiv returnează noua întrerupere a programului în caz de succes. În
       caz de eșec, apelul de sistem returnează întreruperea curentă. Funcția de învăluire glibc face o  anumită
       muncă  (de exemplu, verifică dacă noua întrerupere este mai mică decât addr) pentru a furniza valorile de
       returnare 0 și -1 descrise mai sus.

       În Linux, sbrk() este implementată ca o funcție de bibliotecă care utilizează apelul de sistem  brk()  și
       face o anumită contabilitate internă pentru a putea returna vechea valoare de întrerupere.

CONSULTAȚI ȘI

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

TRADUCERE

       Traducerea    în   limba   română   a   acestui   manual   a   fost   creată   de   Remus-Gabriel   Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența  publică  generală  GNU  Versiunea   3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  sau  o  versiune  ulterioară  cu privire la condiții privind
       drepturile de autor.  NU se asumă Nicio RESPONSABILITATE.

       Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți  un  e-mail  la  ⟨translation-team-
       ro@lists.sourceforge.net⟩.