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

NUME
stdin, stdout, stderr - fluxuri In/Ieș standard
BIBLIOTECA
Biblioteca C standard (libc, -lc)
REZUMAT
#include <stdio.h>
FIȘIER extern *stdin;
FIȘIER extern *stdout;
FIȘIER extern *stderr;
DESCRIERE
În condiții normale, fiecare program UNIX are trei fluxuri deschise la pornire, unul pentru intrare, unul
pentru ieșire și unul pentru afișarea mesajelor de diagnosticare sau de eroare. Aceste fluxuri sunt de
obicei atașate la terminalul utilizatorului (a se vedea tty(4)), dar se pot referi în schimb la fișiere
sau la alte dispozitive, în funcție de ceea ce a ales să configureze procesul părinte. (A se vedea, de
asemenea, secțiunea „Redirecționare” din sh(1).)
Fluxul de intrare este denumit „intrarea standard”; fluxul de ieșire este denumit „ieșirea standard”; iar
fluxul de eroare este denumit „ieșirea de eroare standard”. Acești termeni sunt prescurtați pentru a
forma simbolurile utilizate pentru a se referi la aceste fișiere, și anume stdin, stdout și stderr.
Fiecare dintre aceste simboluri este o macrocomandă stdio(3) de tip indicator (pointer) la FIȘIER și
poate fi utilizată cu funcții precum fprintf(3) sau fread(3).
Din moment ce FIȘIERELE sunt o învăluire-tampon în jurul descriptorilor de fișiere UNIX, aceleași fișiere
de bază pot fi accesate și prin utilizarea interfeței de fișiere UNIX brute, adică prin funcții precum
read(2) și lseek(2).
La pornirea programului, numărul întreg al descriptorilor de fișiere 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 în <unistd.h>. (Aplicarea freopen(3) la unul dintre aceste
fluxuri poate schimba numărul descriptorului de fișier asociat fluxului).
Rețineți că utilizarea mixtă a FIȘIERELOR și a descriptorilor de fișiere brute poate produce rezultate
neașteptate și, în general, trebuie evitată. (Pentru masochiștii dintre dumneavoastră: POSIX.1,
secțiunea 8.2.3, descrie în detaliu modul în care ar trebui să funcționeze această interacțiune). O
regulă generală este că descriptorii de fișiere sunt gestionați în nucleu, în timp ce stdio este doar o
bibliotecă. Acest lucru înseamnă, de exemplu, că, după un exec(3), procesul-copil moștenește toți
descriptorii de fișiere deschise, dar toate fluxurile vechi devin inaccesibile.
Deoarece simbolurile stdin, stdout și stderr sunt specificate ca fiind macrocomenzi, atribuirea acestora
nu este portabilă. Fluxurile standard pot fi făcute să se refere la fișiere diferite cu ajutorul
funcției de bibliotecă freopen(3), introdusă special pentru a face posibilă reasignarea stdin, stdout și
stderr. Fluxurile standard sunt închise printr-un apel la exit(3) și prin terminarea normală a
programului.
STANDARDE
Macrocomenzile stdin, stdout și stderr sunt conforme cu C99, iar acest standard stipulează, de asemenea,
că aceste trei fluxuri trebuie să fie deschise la pornirea programului.
NOTE
Fluxul stderr nu are memorie tampon. Fluxul stdout este cu memorie tampon de linie atunci când este
îndreptat către un terminal. Liniile parțiale nu vor apărea până când nu se apelează fflush(3) sau
exit(3), sau până când nu se imprimă o nouă linie. Acest lucru poate produce rezultate neașteptate, în
special în cazul ieșirii de depanare. Modul de utilizare a memoriei tampon al fluxurilor standard (sau
al oricărui alt flux) poate fi schimbat cu ajutorul apelului setbuf(3) sau setvbuf(3). Rețineți că, în
cazul în care stdin este asociat cu un terminal, este posibil să fie utilizată, de asemenea, memoria
tampon de intrare din controlorul terminalului, fără nicio legătură cu cea a stdio. (Într-adevăr, în mod
normal, intrarea terminalului este în memoria tampon direct din nucleu). Această gestionare a intrării
în nucleu poate fi modificată cu ajutorul unor apeluri precum tcsetattr(3); a se vedea, de asemenea,
stty(1) și termios(3).
CONSULTAȚI ȘI
csh(1), sh(1), open(2), fopen(3), stdio(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 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.
Pagini de manual de Linux 6.03 29 decembrie 2022 stdin(3)