Stderr
ceer
FILE *stderr;
Standardowe wyjście błędów. Wskaźnik do jednego z trzech plików wyjść standardowych (pozostałe to stdout oraz stdin).
Standardowe wyjście błędów jest domyślnym miejscem przeznaczenia dla komunikatów o błędach oraz ostrzeżeniach. Podobnie, jak stdout, zazwyczaj związany jest z wyjściem na konsolę (ekran).
Strumień stderr może zostać użyty jako argument wszędzie tam, gdzie oczekiwany jest wskaźnik do pliku, np. w funkcji fputs albo fprintf.
Oba wyjścia standardowe stdout oraz stderr są powiązane z tym samym wyjściem na konsolę, jednak aplikacje rozróżniają co ma zostać podane na wyjście stdout, a co na stderr, nawet jeśli jedno z nich jest przekierowane. Przykładem może tu być aplikacja, która wypisuje wyniki swojego działania w konsoli (na wyjście stdout), a przypadkowe błędy, poprzez przekierowanie strumienia stderr wypisuje do pliku.
Wspominane przekierowanie strumienia stderr można wykonać używając funkcji freopen:
#include <stdio.h>
int main (int argc, char* argv[])
{
freopen ("bledy.log","w",stderr);
perror ("Ten blad nie zostanie wyswietlony, tylko zapisany bezposrednio do pliku");
fclose (stderr);
return 0;
}
Przykład
#include <stdio.h>
int main(int argc, char* argv[])
{
FILE *plik;
plik = fopen ("clients.dat", "r"); /* otworzenie pliku do odczytu */
if ( !plik ) { /* w przypadku, gdy nie udało się otworzyć pliku... */
fprintf (stderr, "Blad przy otwieraniu pliku: %s", strerror (errno)); /*... wyświetla błąd na wyjście stderr */
return 1;
}
/* {operacje na pliku} */
fclose (plik); /* zamknięcie pliku */
return 0;
}
W przypadku niepowodzenia (plik nie zostanie otworzony z pewnych względów), funkcja wyświetli błąd w stylu:
Blad przy otwieraniu pliku: No such file or directory
Zobacz też: