brk(2) System Calls Manual brk(2) NUME brk, sbrk - modifica dimensiunea segmentului de date BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include int brk(void *addr); void *sbrk(intptr_t increment); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): brk(), sbrk(): Incepand 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)) Inainte de glibc 2.12: _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500 DESCRIERE brk() i sbrk() modifica locaia lui program break, care definete sfaritul segmentului de date al procesului (de exemplu, pauza de program este prima locaie dupa sfaritul segmentului de date neiniializat). Creterea intreruperii de program are ca efect alocarea de memorie pentru proces; scaderea intreruperii are ca efect eliberarea de memorie. brk() stabilete sfaritul segmentului de date la valoarea specificata de addr, atunci cand aceasta valoare este rezonabila, sistemul are suficienta memorie, iar procesul nu depaete dimensiunea maxima a datelor (a se vedea setrlimit(2)). sbrk() marete spaiul de date al programului cu increment octei. Apelarea sbrk() cu un increment de 0 poate fi utilizata pentru a gasi locaia curenta a intreruperii programului. VALOAREA RETURNATA In caz de succes, brk() returneaza zero. In caz de eroare, se returneaza -1, iar errno este stabilita la ENOMEM. In caz de succes, sbrk() returneaza intreruperea anterioara a programului (daca pauza a fost marita, atunci aceasta valoare este un indicator la inceputul memoriei nou alocate). In caz de eroare, se returneaza (void *) -1, iar errno este stabilita la ENOMEM. STANDARDE Niciunul. ISTORIC 4.3BSD; SUSv1, marcata ca ,,LEGACY" in SUSv2, eliminata in POSIX.1-2001. NOTE Evitai utilizarea brk() i sbrk(): pachetul de alocare a memoriei malloc(3) este modul portabil i confortabil de alocare a memoriei. Diferite sisteme utilizeaza diferite tipuri pentru argumentul lui sbrk(). Cele mai comune sunt int, ssize_t, ptrdiff_t, intr_t. Diferene intre biblioteca C i nucleu Valoarea de retur descrisa mai sus pentru brk() este comportamentul oferit de funcia de invaluire glibc pentru apelul de sistem Linux brk(); (in majoritatea celorlalte implementari, valoarea de returnare de la brk() este aceeai; aceasta valoare de returnare a fost, de asemenea, specificata in SUSv2). Cu toate acestea, apelul de sistem Linux efectiv returneaza noua intrerupere a programului in caz de succes. In caz de eec, apelul de sistem returneaza intreruperea curenta. Funcia de invaluire glibc face o anumita munca (de exemplu, verifica daca noua intrerupere este mai mica decat addr) pentru a furniza valorile de returnare 0 i -1 descrise mai sus. In Linux, sbrk() este implementata ca o funcie de biblioteca care utilizeaza apelul de sistem brk() i face o anumita contabilitate interna pentru a putea returna vechea valoare de intrerupere. CONSULTAI I execve(2), getrlimit(2), end(3), malloc(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 brk(2)