Provided by: manpages-pl-dev_0.5-1_all bug

NAZWA

       errno - numer ostatniego błędu

SKŁADNIA

       #include <errno.h>

OPIS

       Plik  nagłówkowy <errno.h> definiuje zmienną całkowitą errno, która jest ustawiana w razie
       błędu przez wywołania systemowe oraz pewne funkcje biblioteczne  tak,  aby  zaznaczyć,  co
       poszło  źle.  Wartość ta jest istotna, tylko gdy wywołanie zwróciło błąd (tj. -1 w wypadku
       większości  wywołań  systemowych  albo  -1  lub  NULL   w   wypadku   większości   funkcji
       bibliotecznych),  ale  funkcja  biblioteczna,  która  zakończyła  się sukcesem, także może
       zmienić errno.

       Poprawne numery błędów są niezerowe; żadne wywołanie systemowe  lub  funkcja  biblioteczne
       nigdy nie ustawi errno na zero.

       W  przypadku  niektórych wywołań systemowych i funkcji bibliotecznych (np. getpriority(2))
       -1 jest poprawną wartością zwracaną również w razie powodzenia. W  takich  wypadkach,  aby
       sprawdzić, czy wywołanie lub funkcja zakończyły się powodzeniem czy błędem, należy ustawić
       errno na zero przed wywołaniem, a następnie - jeżeli wywołanie lub funkcja zwrócą wartość,
       która  mogłaby  wskazywać  na  wystąpienie  błędu  -  sprawdzić,  czy  wartość  errno jest
       niezerowa.

       errno jest definiowana przez standard ISO C jako modyfikowalna l-wartość typu  int,  która
       nie  może zostać jawnie zadeklarowana; errno może być makrem. Wartość errno jest lokalna w
       obrębie wątku, jej zmiana w jednym wątku nie wpływa na wartość w innym.

       Każdej nazwie błędu określonej przez POSIX.1 musi  odpowiadać  inna  wartość  z  wyjątkiem
       EAGAIN i EWOULDBLOCK, które mogą mieć tę samą wartość.

       Poniżej  przedstawiono  listę  nazw błędów, które są zdefiniowane pod Linuksem. Niektóre z
       nich  oznaczono  jako  POSIX.1,  wskazując,  że  nazwa  błędu  jest   zdefiniowana   przez
       POSIX.1-2001, lub jako C99, wskazując na nazwy błędów zdefiniowane przez C99.

       E2BIG           Lista argumentów za długa (POSIX.1)

       EACCES          Brak dostępu (POSIX.1)

       EADDRINUSE      Adres jest już w użyciu (POSIX.1)

       EADDRNOTAVAIL   Niedostępny adres (POSIX.1)

       EAFNOSUPPORT    Rodzina adresów nieobsługiwana (POSIX.1)

       EAGAIN          Zasoby  chwilowo  niedostępne  (może  mieć tę samą wartość co EWOULDBLOCK)
                       (POSIX.1)

       EALREADY        Operacja jest już wykonywana (POSIX.1)

       EBADE           Błędna wymiana

       EBADF           Błędny deskryptor pliku (POSIX.1)

       EBADFD          Deskryptor pliku w złym stanie

       EBADMSG         Błędny komunikat (POSIX.1)

       EBADR           Błędny deskryptor żądania

       EBADRQC         Zły kod żądania

       EBADSLT         Błędny kanał

       EBUSY           Urządzenie lub zasoby zajęte (POSIX.1)

       ECANCELED       Operacja anulowana (POSIX.1)

       ECHILD          Brak procesów potomnych (POSIX.1)

       ECHRNG          Numer kanału poza zakresem

       ECOMM           Błąd komunikacji podczas wysyłania

       ECONNABORTED    Połączenie przerwane (POSIX.1)

       ECONNREFUSED    Połączenie odrzucone (POSIX.1)

       ECONNRESET      Połączenie zerwane (przez drugą stronę) (POSIX.1)

       EDEADLK         Uniknięto zakleszczenia zasobów (POSIX.1)

       EDEADLOCK       Synonim EDEADLK

       EDESTADDRREQ    Wymagany jest adres docelowy (POSIX.1)

       EDOM            Argument spoza dziedziny funkcji matematycznej (POSIX.1, C99)

       EDQUOT          Przekroczony limit dyskowy (POSIX.1)

       EEXIST          Plik istnieje (POSIX.1)

       EFAULT          Błędny adres (POSIX.1)

       EFBIG           Plik zbyt duży (POSIX.1)

       EHOSTDOWN       Urządzenie jest wyłączone

       EHOSTUNREACH    Host jest niedostępny (POSIX.1)

       EIDRM           Identyfikator został usunięty (POSIX.1)

       EILSEQ          Niepoprawna sekwencja bajtów (POSIX.1, C99)

       EINPROGRESS     Operacja jest właśnie wykonywana (POSIX.1)

       EINTR           Przerwane wywołanie systemowe (POSIX.1); patrz signal(7)

       EINVAL          Zły argument (POSIX.1)

       EIO             Błąd wejścia/wyjścia (POSIX.1)

       EISCONN         Gniazdo już jest połączone (POSIX.1)

       EISDIR          Jest katalogiem (POSIX.1)

       EISNAM          Jest plikiem nazwanym

       EKEYEXPIRED     Klucz wygasł

       EKEYREJECTED    Klucz został odrzucony przez usługę

       EKEYREVOKED     Klucz został unieważniony

       EL2HLT          Poziom 2 zatrzymany

       EL2NSYNC        Poziom 2 niezsynchronizowany

       EL3HLT          Poziom 3 zatrzymany

       EL3RST          Poziom 3 zatrzymany

       ELIBACC         Brak dostępu do wymaganej biblioteki dzielonej

       ELIBBAD         Próba użycia uszkodzonej biblioteki dzielonej

       ELIBMAX         Próba łączenia ze zbyt wieloma bibliotekami dzielonymi

       ELIBSCN         Sekcja lib w a.out jest uszkodzona

       ELIBEXEC        Nie można bezpośrednio uruchomić biblioteki dzielonej

       ELOOP           Za duże zagnieżdżenie dowiązań symbolicznych (POSIX.1)

       EMEDIUMTYPE     Niewłaściwy typ medium

       EMFILE          Za dużo otwartych plików (POSIX.1)

       EMLINK          Za dużo dowiązań (POSIX.1)

       EMSGSIZE        Komunikat za długi (POSIX.1)

       EMULTIHOP       Próba przejścia przez zbyt wiele ruterów (POSIX.1)

       ENAMETOOLONG    Za długa nazwa pliku (POSIX.1)

       ENETDOWN        Sieć jest wyłączona (POSIX.1)

       ENETRESET       Połączenie zerwane przez sieć (POSIX.1)

       ENETUNREACH     Sieć jest niedostępna (POSIX.1)

       ENFILE          Za dużo otwartych plików w systemie (POSIX.1)

       ENOBUFS         Brak miejsca w buforze (POSIX.1 (opcja XSI STREAMS))

       ENODATA         Brak dostępnych komunikatów w głównej kolejce odczytu strumieni (POSIX.1)

       ENODEV          Nie ma takiego urządzenia (POSIX.1)

       ENOENT          Nie ma takiego pliku ani katalogu (POSIX.1)

       ENOEXEC         Błędny format pliku wykonywalnego (POSIX.1)

       ENOKEY          Wymagany klucz niedostępny

       ENOLCK          Brak dostępnych blokad (POSIX.1)

       ENOLINK         Połączenie zostało przerwane (POSIX.1)

       ENOMEDIUM       Brak medium

       ENOMEM          Nie można przydzielić pamięci (POSIX.1)

       ENOMSG          Brak komunikatu o pożądanym typie (POSIX.1)

       ENONET          Maszyna nie znajduje się w tej sieci

       ENOPKG          Pakiet nie jest zainstalowany

       ENOPROTOOPT     Protokół niedostępny (POSIX.1)

       ENOSPC          Brak miejsca na urządzeniu (POSIX.1)

       ENOSR           Brak dodatkowych strumieni (POSIX.1 (opcja XSI STREAMS))

       ENOSTR          Nie jest strumieniem (POSIX.1 (opcja XSI STREAMS))

       ENOSYS          Niezaimplementowana funkcja (POSIX.1)

       ENOTBLK         Wymagane urządzenie blokowe

       ENOTCONN        Drugi koniec nie jest połączony (POSIX.1)

       ENOTDIR         Nie jest katalogiem (POSIX.1)

       ENOTEMPTY       Katalog nie jest pusty (POSIX.1)

       ENOTSOCK        Nie jest gniazdem (POSIX.1)

       ENOTSUP         Operacja nieobsługiwana (POSIX.1)

       ENOTTY          Niewłaściwa operacja kontrolna (ioctl) wejścia/wyjścia (POSIX.1)

       ENOTUNIQ        Nazwa nie jest unikatowa w sieci

       ENXIO           Nie ma takiego urządzenia ani adresu (POSIX.1)

       EOPNOTSUPP      Operacja na gnieździe nieobsługiwana (POSIX.1)

                       (ENOTSUP i EOPNOTSUPP mają pod Linuksem tę samą wartość, chociaż zgodnie z
                       POSIX.1 te wartość powinny się różnić)

       EOVERFLOW       Wartość za duża dla zdefiniowanego typu danych (POSIX.1)

       EPERM           Operacja niedozwolona (POSIX.1)

       EPFNOSUPPORT    Nieobsługiwana rodzina protokołów

       EPIPE           Przerwany potok (POSIX.1)

       EPROTO          Błąd protokołu (POSIX.1)

       EPROTONOSUPPORT Protokół nieobsługiwany (POSIX.1)

       EPROTOTYPE      Typ protokołu nie pasuje do gniazda (POSIX.1)

       ERANGE          Za duży wynik (POSIX.1, C99)

       EREMCHG         Zmienił się adres drugiego końca

       EREMOTE         Zdalny obiekt jest obiektem podmontowanym przez NFS

       EREMOTEIO       Błąd wejścia/wyjścia w odległym systemie

       ERESTART        Należy wznowić przerwane wywołanie systemowe

       EROFS           System plików wyłącznie do odczytu (POSIX.1)

       ESHUTDOWN       Wysyłanie po zamknięciu gniazda jest niemożliwe

       ESPIPE          Błędne przesunięcie (POSIX.1)

       ESOCKTNOSUPPORT Nieobsługiwany typ gniazda

       ESRCH           Nie ma takiego procesu (POSIX.1)

       ESTALE          Nieaktualny uchwyt pliku (POSIX.1)

                       Ten błąd może wystąpić na systemie plików NFS i na innych systemach plików

       ESTRPIPE        Błąd potoku biblioteki strumieni

       ETIME           Upłynął czas stopera (POSIX.1 (opcja XSI STREAMS))

                       (POSIX.1 mówi "Przekroczenie czasu STREAM ioctl(2)")

       ETIMEDOUT       Przekroczony czas oczekiwania na połączenie (POSIX.1)

       ETXTBSY         Plik tekstowy zajęty (POSIX.1)

       EUCLEAN         Struktura wymaga wyczyszczenia

       EUNATCH         Sterownik protokołu nie jest podłączony

       EUSERS          Za dużo użytkowników

       EWOULDBLOCK     Operacja  zostałaby  zablokowana  (może  mieć  tę  samą wartość co EAGAIN)
                       (POSIX.1)

       EXDEV           Niepoprawne dowiązanie (POSIX.1)

       EXFULL          Przepełniona wymiana

UWAGI

       Powszechnym błędem jest robienie

           if (somecall() == -1) {
               printf("somecall() zwróciło błąd\n");
               if (errno == ...) { ... }
           }

       ponieważ errno niekoniecznie  musi  mieć  tę  samą  wartość,  jaką  miało  po  powrocie  z
       somecall() (tj. mogła zostać zmieniona przez printf(3)).  Jeżeli wartość errno powinna być
       utrzymana pomiędzy wywołaniami funkcji, musi być zachowywana:

           if (somecall() == -1) {
               int errsv = errno;
               printf("somecall() zwróciło błąd\n");
               if (errsv == ...) { ... }
           }

       Powszechnie w tradycyjnym C deklarowało się ręcznie errno (np. extern int  errno)  zamiast
       włączać  plik  <errno.h>.  Nie  rób  tego.  To nie będzie działało z nowoczesnymi wersjami
       biblioteki C. Jednakże na (bardzo) starych systemach Unix, <errno.h> może nie istnieć i ta
       deklaracja będzie potrzebna.

ZOBACZ TAKŻE

       err(3), error(3), perror(3), strerror(3)

O STRONIE

       Angielska  wersja  tej  strony  pochodzi  z  wydania  3.52  projektu Linux man-pages. Opis
       projektu  oraz  informacje  dotyczące  zgłaszania  błędów  można   znaleźć   pod   adresem
       http://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

       Autorami  polskiego  tłumaczenia  niniejszej  strony podręcznika man są: Adam Byrtek (PTM)
       <abyrtek@priv.onet.pl>, Andrzej Krzysztofowicz (PTM) <ankry@mif.pg.gda.pl>, Paweł Krawczyk
       (eglibc) <kravietz@ceti.pl>, Jakub Bogusz (eglibc) <qboosh@pld-linux.org> i Robert Luberda
       <robert@debian.org>.

       Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów  na
       stronie   http://sourceforge.net/projects/manpages-pl/.   Jest   zgodne   z  wersją   3.52
       oryginału.

                                            2008-07-09                                   ERRNO(3)