Tratarea erorilor -stderr si exit
Tratamentul erorilor in cat nu este ideal. Problema este ca
daca unul d din fisiere nu poate fi accesat din vreun motiv
oarecare, diagnosticul erorii este tiparit numai la sfirsitul
iesirii concatenate. Aceasta este aceptabil dacaiesirea se
face pe un terminal, dar este rau daca iesirea este un fisier sau
un alt program via o pipeline.
Pentru a trata aceasta situatie maibine, un al doilea fisier de
iesire numit stderr este asignat programului, la fel castdin si
stdout. Daca e este posibil, stderr apare pe terminalul
utilizatorului chiar daca iesirea standard este redirectata.
Sa revizuim programl cat in asa fel ca mesajele de eroare sa
apara in fisierul standard de erori
#include <stdio.h>
main(argc, argv) /* cat: concatenate files *?
int argc:
char *argv[];
else
exit(0);
}
Programul semnaleaza erorile in doua feluri. Diagnosticul de
iesire produs de catre fprintf merge in stderr, astfel el
gaseste drumul catre terminalul utilizatorului in loc sa dispara
printr-un pipeline sau fisier de iesire.
Programul de asemenea utilizeaza si functia exit din biblioteca
standard care termina executia programului cind este apelata.
Argumentul lui exit este utilizabil de catre orice proces care
il apeleaza, astfel succesul sau esecul programului poate fi
testat de un alt program pentru care cel dinainte este un
subprogram. Prin conventie returnarea valorii 0 semnaleaza ca
totul ste OK, iar diferite valori nonzero semnifica situatii
anormale.
exit apeleaza fclose pentru fiecare fisier deschis in iesire
pentru a curata bufferul, apoi cheama rutina numita -exit.
Functia exit determina terminarea imediata fara curatarea
bufferului desigur exit poate fi apelata si direct.