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ż:

0 komentarzy