Stdin, stdout, stderr - fluxuri standard de I

TITLUL
stdin, stdout, stderr - fluxuri standard de I / O

SINOPSIS
#include
FILE * stdin extern;
FILE * stdout extern;
FILE * stderr extern;

DESCRIERE
În condiții normale, fiecare program de Unix are trei fluxuri deschis pentru
când este pornit, una pentru ieșire și unul pentru intrare și una de ieșire pentru
mesaje de diagnostic sau de eroare. acestea sunt de obicei atașate la
terminalul de utilizator (a se vedea. tty (4)), dar se poate referi la
fișiere sau alt dispozitiv, în funcție de ceea ce este setat
procesul părinte (secțiunea citit # 96; # 96; I / O redirecționare
(Redirectionarea) '' în sh (1)).

Fluxul de intrare este denumit # 96; # 96; standard de intrare (input standard) ''; curent
O se numește # 96; # 96; standard de ieșire (output standard) ''; și fluxul
mesaje de eroare numit # 96; # 96; eroarea standard (standard
eroare) ''. Acești termeni au fost reduse pentru numele fișierelor care sunt
link-uri, și anume: punct de stdin, stdout și stderr.

Fiecare dintre acești termeni este un stdio macro (3), indicând DOSAR;
posibila utilizare a acestora cu funcții cum ar fi fprintf (3) sau
fread (3).

Variabilele de tip FILE sunt tamponate mânere coajă
fișier Unix. Accesul la aceste fișiere pot fi efectuate, de asemenea, prin intermediul
interfață de nivel scăzut pentru lucrul cu fișiere și utilizarea unor astfel de
funcționează ca citire (2) și lseek (2). descriptori de fișier întregi asociate
Threading stdin, stdout și stderr sunt respectiv egale cu 0, 1 și 2.
Constante STDIN_FILENO, STDOUT_FILENO și STDERR_FILENO identificat aceste
valori.

Rețineți că partajarea de fișiere și se ocupă de nivel scăzut
poate duce la consecințe nedorite, ar trebui evitate
fiecare ocazie. Pentru "masochiști": POSIX.1, secțiunea 8.2.3, detalii
Acesta descrie modul de a determina o astfel munca în echipă. regulă generală
afirmă că descriptorii din nucleu, în timp ce stdio este doar
Biblioteca. Aceasta înseamnă, de exemplu, că după operație
copilul moștenește toate descriptorii de fișiere deschise, dar toate vechi
Fluxurile nu sunt disponibile.

Deoarece stdin, stdout și stderr sunt definite ca macro-uri, atunci moștenesc lor
este imposibil. Fluxurile standard pot referi la alte fișiere utilizând
Funcția bibliotecă freopen (3), special concepute pentru a putea
moștenire stdin, stdout și stderr. Fluxurile standard pot fi închise
apelarea la ieșire (3) și în timpul programului de terminare normală.

CONSIDERAȚII
stderr de alimentare nu tamponat. stdout de furaj tamponat la rândul
adresa la terminal. Liniile incomplete nu apar, sau pentru a apela
fflush (3) sau de ieșire (3), sau până când se imprimă o nouă linie. acest
poate duce la consecințe imprevizibile, în special în cazul în care ieșirea raport
depanare. Mod de tamponare fluxuri standard, (sau oricare alta)
Apelurile pot fi schimbate setbuf (3) sau setvbuf (3). Rețineți că, în
stdin acest caz este asociat cu un terminal, în care este posibil
driver terminal de intrare de tamponare, care nu este corelat cu
I O tamponare /. De fapt, rândul terminalul de intrare
tamponat în nucleu. Prelucrarea datelor de intrare poate fi nucleul
tcsetattr modificat folosind tipul de apel (3); A se vedea. De asemenea, stty (1) și
termios (3). Macrocomenzi stdin, stdout și stderr la ANSI
X3.159-1989 (# 96; # 96; ANSI C ''), care precizează că cele trei fluxuri trebuie
deschide la pornirea programului.

offtopic

>>> După cinci luni de dezvoltare au lansat medii desktop MATE 1.12, în care dezvoltarea continuă a GNOME 2.32 cod de bază menținând în același timp conceptul clasic de formare a desktop-ului. Pachetele de instalare cu MATE 1.12, în viitorul apropiat va fi pregătit pentru Arch Linux. Linux Mint, Debian, Ubuntu, Fedora, Mageia, Slackware și openSUSE. MATE 1.12 va face parte din următoarea versiune de Linux Mint 17.3, și va fi, de asemenea, disponibile prin intermediul registrului central pentru utilizatorii MATE Ubuntu.

>>> Kees Cook, (Kees Cook), fostul șef lider administrator de sistem kernel.org Ubuntu echipa de securitate, care lucrează acum la Google pe software-ul de protecție ChromeOS, a anunțat crearea proiectului Kernel Protection Project auto, în care a planificat pentru a construi o comunitate pentru dezvoltarea și promovarea principalelor tehnologii de protecție activă nucleul Linux, dintre care cele mai multe au fost deja elaborate în cadrul proiectelor pax și Grsecurity. Finanțare și resurse pentru lucrările vor fi furnizate de către organizația Linux Foundation, și membrii programului Inițiativa de infrastructură de bază.

>>> Eliberarea Linux Ubuntu 15.10 -distributiva "Wily vârcolac". Imagini finite de instalare create pentru Ubuntu Desktop, Ubuntu Server și Ubuntu Core (pentru ei la ultimele etape de testare oferite construi numai de zi cu zi), precum și Kubuntu, Lubuntu, Ubuntu MATE, Ubuntu Cloud, Ubuntu GNOME și Xubuntu.