stdin(3) Library Functions Manual stdin(3) NUME stdin, stdout, stderr - fluxuri In/Ie standard BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include extern FILE *stdin; extern FILE *stdout; extern FILE *stderr; DESCRIERE In condiii normale, fiecare program UNIX are trei fluxuri deschise la pornire, unul pentru intrare, unul pentru ieire i unul pentru afiarea mesajelor de diagnosticare sau de eroare. Aceste fluxuri sunt de obicei ataate la terminalul utilizatorului (a se vedea tty(4)), dar se pot referi in schimb la fiiere sau la alte dispozitive, in funcie de ceea ce a ales sa configureze procesul parinte. (A se vedea, de asemenea, seciunea ,,Redirecionari" din sh(1).) Fluxul de intrare este denumit ,,intrarea standard"; fluxul de ieire este denumit ,,ieirea standard"; iar fluxul de eroare este denumit ,,ieirea de eroare standard". Aceti termeni sunt prescurtai pentru a forma simbolurile utilizate pentru a se referi la aceste fiiere, i anume stdin, stdout i stderr. Fiecare dintre aceste simboluri este o macrocomanda stdio(3) de tip indicator (pointer) la FIIER i poate fi utilizata cu funcii precum fprintf(3) sau fread(3). Din moment ce FIIERELE sunt o invaluire-tampon in jurul descriptorilor de fiiere UNIX, aceleai fiiere de baza pot fi accesate i prin utilizarea interfeei de fiiere UNIX brute, adica prin funcii precum read(2) i lseek(2). La pornirea programului, numarul intreg al descriptorilor de fiiere asociat cu fluxurile stdin, stdout i stderr este 0, 1 i, respectiv, 2. Simbolurile de preprocesor STDIN_FILENO, STDOUT_FILENO i STDERR_FILENO sunt definite cu aceste valori in . (Aplicarea freopen(3) la unul dintre aceste fluxuri poate schimba numarul descriptorului de fiier asociat fluxului). Reinei ca utilizarea mixta a FIIERELOR i a descriptorilor de fiiere brute poate produce rezultate neateptate i, in general, trebuie evitata. (Pentru masochitii dintre dumneavoastra: POSIX.1, seciunea 8.2.3, descrie in detaliu modul in care ar trebui sa funcioneze aceasta interaciune). O regula generala este ca descriptorii de fiiere sunt gestionai in nucleu, in timp ce stdio este doar o biblioteca. Acest lucru inseamna, de exemplu, ca, dupa un exec(3), procesul-copil motenete toi descriptorii de fiiere deschise, dar toate fluxurile vechi devin inaccesibile. Deoarece simbolurile stdin, stdout i stderr sunt specificate ca fiind macrocomenzi, atribuirea acestora nu este portabila. Fluxurile standard pot fi facute sa se refere la fiiere diferite cu ajutorul funciei de biblioteca freopen(3), introdusa special pentru a face posibila reasignarea stdin, stdout i stderr. Fluxurile standard sunt inchise printr-un apel la exit(3) i prin terminarea normala a programului. STANDARDE C11, POSIX.1-2008. Standardele stipuleaza, de asemenea, ca aceste trei fluxuri trebuie sa fie deschise la pornirea programului. ISTORIC C89, POSIX.1-2001. NOTE Fluxul stderr nu are memorie tampon. Fluxul stdout este cu memorie tampon de linie atunci cand este indreptat catre un terminal. Liniile pariale nu vor aparea pana cand nu se apeleaza fflush(3) sau exit(3), sau pana cand nu se imprima o noua linie. Acest lucru poate produce rezultate neateptate, in special in cazul ieirii de depanare. Modul de utilizare a memoriei tampon al fluxurilor standard (sau al oricarui alt flux) poate fi schimbat cu ajutorul apelului setbuf(3) sau setvbuf(3). Reinei ca, in cazul in care stdin este asociat cu un terminal, este posibil sa fie utilizata, de asemenea, memoria tampon de intrare din controlorul terminalului, fara nicio legatura cu cea a stdio. (Intr-adevar, in mod normal, intrarea terminalului este in memoria tampon direct din nucleu). Aceasta gestionare a intrarii in nucleu poate fi modificata cu ajutorul unor apeluri precum tcsetattr(3); a se vedea, de asemenea, stty(1) i termios(3). CONSULTAI I csh(1), sh(1), open(2), fopen(3), stdio(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.18 21 septembrie 2025 stdin(3)