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