setbuf(3) Library Functions Manual setbuf(3) NUME setbuf, setbuffer, setlinebuf, setvbuf, setvbuf - operaii asupra memoriei tampon a fluxurilor BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include int setvbuf(FILE *restrict stream, char buf[restrict .size], int mode, size_t size); void setbuf(FILE *restrict stream, char *restrict buf); void setbuffer(FILE *restrict stream, char buf[restrict .size], size_t size); void setlinebuf(FILE *stream); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): setbuffer(), setlinebuf(): Incepand cu glibc 2.19: _DEFAULT_SOURCE glibc 2.19 i versiunile anterioare: _BSD_SOURCE DESCRIERE Cele trei tipuri de operaii cu memorie tampon disponibile, sunt: fara memorie tampon, cu memorie tampon de bloc i cu memorie tampon de linie. Atunci cand un flux de ieire este fara memorie tampon, informaiile apar in fiierul sau terminalul de destinaie imediat ce sunt scrise; atunci cand este cu memorie tampon de bloc, mai multe caractere sunt salvate i scrise ca un bloc; atunci cand este cu memorie tampon de linie, caracterele sunt salvate pana cand este emisa o noua linie sau pana cand este citita o intrare din orice flux ataat la un dispozitiv terminal (de obicei stdin). Funcia fflush(3) poate fi utilizata pentru a fora ieirea anticipata a blocului; (a se vedea fclose(3)). In mod normal, toate fiierele sunt stocate in bloc. In cazul in care un flux se refera la un terminal (aa cum face in mod normal stdout), acesta este stocat in memoria tampon pe linie. Fluxul de eroare standard stderr este intotdeauna fara stocare in memoria tampon in mod implicit. Funcia setvbuf() poate fi utilizata pe orice flux deschis pentru a modifica memoria tampon. Argumentul mode trebuie sa fie una dintre urmatoarele trei macrocomenzi: _IONBF fara stocare in memoria tampon _IOLBF stocare in memoria tampon pe linie _IOFBF stocare completa in memoria tampon Cu excepia fiierelor fara memorie tampon, argumentul buf trebuie sa indice o memorie tampon cu o lungime de cel puin size octei; aceasta memorie tampon va fi utilizata in locul celei curente. In cazul in care argumentul buf este NULL, este afectat doar modul; la urmatoarea operaie de citire sau scriere se va aloca o noua memorie tampon. Funcia setvbuf() poate fi utilizata numai dupa deschiderea unui flux i inainte de a se efectua orice alta operaiune asupra acestuia. Celelalte trei apeluri sunt, de fapt, simple alias pentru apelurile catre setvbuf(). Funcia setbuf() este exact echivalenta cu apelul setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ); Funcia setbuffer() este identica, cu excepia faptului ca dimensiunea memoriei tampon este la latitudinea apelantului, in loc sa fie determinata de valoarea implicita BUFSIZ. Funcia setlinebuf() este exact echivalenta cu apelul: setvbuf(stream, NULL, _IOLBF, 0); VALOAREA RETURNATA Funcia setvbuf() returneaza 0 in caz de succes. In caz de eec (mode nu este valid sau cererea nu poate fi onorata), returneaza o valoare diferita de zero. In caz de eec, poate configura errno. Celelalte funcii nu returneaza nicio valoare. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |setbuf(), setbuffer(), setlinebuf(), | Sigurana firelor | MT-Safe | |setvbuf() | | | +--------------------------------------+---------------------+---------+ STANDARDE setbuf() setvbuf() C11, POSIX.1-2008. ISTORIC setbuf() setvbuf() C89, POSIX.1-2001. AVERTISMENTE POSIX noteaza ca valoarea lui errno este nespecificata dupa un apel la setbuf() i noteaza, de asemenea, ca, din moment ce valoarea lui errno nu trebuie sa ramana neschimbata dupa un apel reuit la setbuf(), aplicaiile ar trebui sa utilizeze in schimb setvbuf() pentru a detecta erorile. ERORI Trebuie sa va asigurai ca spaiul catre care indica buf inca mai exista in momentul in care stream este inchis, ceea ce se intampla, de asemenea, la terminarea programului. De exemplu, urmatorul lucru nu este valabil: #include int main(void) { char buf[BUFSIZ]; setbuf(stdout, buf); printf("Salutare lume!\n"); return 0; } CONSULTAI I stdbuf(1), fclose(3), fflush(3), fopen(3), fread(3), malloc(3), printf(3), puts(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 setbuf(3)