Stderr

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

Informacje
Ostatnia modyfikacja 29-04-2008 22:30 Ostatni autor ceer
Ilość wyświetleń 2892 Wersja 2
Komentarz

Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0261 sek. (zapytań SQL: 9)